java - EJB 3 注入(inject) spring bean

标签 java spring jakarta-ee ejb-3.0

我已经用 spring、spring security 制作了一个 mavenized web 应用程序......现在,我想添加用于数据库访问的 ejb 模块,我在互联网上寻找,但我没有找到明确的东西,因为这是我第一次与 EJB。 我想在我的 Controller 中使用@EJB之类的东西 喜欢”

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


@EJB
private MyEjb myEjb;

如果有教程或任何其他帮助,我如何在 spring 上下文中配置它。会很棒,谢谢你

最佳答案

要将您的 ejb 3 bean 注入(inject)到 spring bean 中,您可以按照以下步骤操作。 1. 创建你的 Spring bean 2. 使用远程和本地接口(interface)创建 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";   
 }
}

以上是同时使用远程和本地接口(interface)的EJB3的例子

现在我们创建注入(inject)这个 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 的实例,但是我们需要将它注入(inject)到 spring 的 spring-config.xml 中。 在spring bean中注入(inject)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>

注意:我这里使用的是本地界面,您可以根据需要使用远程。

  1. 另一种注入(inject)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 将被注入(inject)到您的 spring bean 中。

关于java - EJB 3 注入(inject) spring bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23008810/

相关文章:

java - 子列表索引越界异常

java - 带接口(interface)的 Hibernate 一对一映射。我需要建议

java - 如何隐藏@RequestMapping 参数?

java - 外部类成员变量null转内部类

java - EditView只显示文本文件的最后一行

java - 调整 PNG 大小的自定义方法失去透明度

java - Spring @cacheable 如何在凌晨 12 点刷新缓存?

spring - 如何让第 3 方将代码添加到我的 Grails 应用程序

java - Jakarta ee到底是什么

Java - 计算两个文档中的单词