要在 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 示例
现在我们创建注入这个 ejb 的 Spring bean。
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>
注意:这里我使用的是本地接口,你可以根据需要使用远程。
- 另一种注入 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 中。