[英]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
<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。
<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.