为了将您的EJB 3 Bean注入Spring 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文件中。
有两种方法可以将EJB注入到Spring bean中:
- 第一种方式:
<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接口。
- 另一种注入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中。