簡體   English   中英

EJB 3注入spring bean

[英]EJB 3 injection into spring beans

我已經制作了一個帶有彈簧,彈簧安全性的mavenized Web應用程序......現在,我想添加ejb模塊進行數據庫訪問,我在互聯網上查找但是我沒有找到清楚的東西,因為這是我第一次使用EJB。 我想在我的控制器中使用@EJB之類的東西,比如“

@Stateless(name = "CustomerServiceImpl")
public class CustomerServiceImpl implements CustomerService 


@EJB
private MyEjb myEjb;

如果有教程或任何其他幫助,我如何在spring上下文中配置它。 這將是偉大的,謝謝你

要在spring bean中注入ejb 3 bean,您可以按照以下步驟操作。 1.創建Spring bean 2.使用遠程和本地接口創建EJB 3.編寫實現類例如

package com.ejb;
@Local
public interface MyEjbLocal{
       public String sendMessage();
}

package com.ejb;
@Remote
public interface MyEjbRemote{
       public String sendMessage();
}

@Stateless(mappedName = "ejb/MessageSender")
public class MyEjbImpl implements MyEjbLocal, MyEjbRemote{
 public String sendMessage(){
   return "Hello";   
 }
}

上面是EJB3的示例,它使用遠程和本地接口

現在我們創建Spring bean,我們在其中注入這個ejb。

package com.ejb;

@Service
public class MyService {

   private MyEjbLocal ejb;

   public void setMyEjbLocal(MyEjbLocal ejb){
        this.ejb = ejb;
  }

  public MyEjbLocal getMyEjbLocal(){
       return ejb;
  }
}

我們在spring中添加了ejb的實例,但是我們需要在spring的spring-config.xml中注入它。 有兩種方法可以在spring bean中注入ejb

  1. 第一道路
<bean id ="myBean" class="org.springframework.ejb.access.LocalStetelessSessionProxyFactoryBean">
       <property name="jndiName" value="ejb/MessageSender#com.ejb.MyEjb=Local />
       <property name="businessInterface" value="com.ejb.MyEjbLocal" />
</bean>

注意:我在這里使用了Local接口,您可以根據需要使用Remote。

  1. 注入ejb的另一種方法是
<jee:remote-slsb id="messageSender"
jndi-name="ejb/MessageSender#com.ejb.MyEjbLocal"
           business-interface="com.ejb.MyEjbLocal"
           home-interface="com.ejb.MyEjbLocal"
           cache-home="false" lookup-home-on-startup="false"
           refresh-home-on-connect-failure="true" />

因此當bean在那時被初始化時,ejb將被注入你的spring bean中。

看看這里: http//docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#ejb-access-local

您可以使用setter注入注入EJB。 以這種方式配置bean:

<bean id="myComponent" class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
    <property name="jndiName" value="ejb/myBean"/>
    <property name="businessInterface" value="com.mycom.MyComponent"/>
</bean>

<bean id="myController" class="com.mycom.myController">
    <property name="myComponent" ref="myComponent"/>
</bean>

您還可以使用<jee:local-slsb>標記來注入EJB:

<jee:local-slsb id="myComponent" jndi-name="ejb/myBean"
        business-interface="com.mycom.MyComponent"/>

<bean id="myController" class="com.mycom.myController">
    <property name="myComponent" ref="myComponent"/>
</bean>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM