elp*_*zio 5 java spring java-ee ejb-3.0
我已经制作了一个带有弹簧,弹簧安全性的mavenized Web应用程序......现在,我想添加ejb模块进行数据库访问,我正在互联网上查找,但我没有找到清楚的东西,因为这是我第一次使用EJB.我想在我的控制器中使用@EJB之类的东西,比如"
@Stateless(name = "CustomerServiceImpl")
public class CustomerServiceImpl implements CustomerService
@EJB
private MyEjb myEjb;
Run Code Online (Sandbox Code Playgroud)
如果有教程或任何其他帮助,我如何在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";
}
}
Run Code Online (Sandbox Code Playgroud)
上面是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;
}
}
Run Code Online (Sandbox Code Playgroud)
我们在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>
Run Code Online (Sandbox Code Playgroud)
注意:我在这里使用了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" />
Run Code Online (Sandbox Code Playgroud)
因此当bean在那时被初始化时,ejb将被注入你的spring bean中.
| 归档时间: |
|
| 查看次数: |
14007 次 |
| 最近记录: |