java - 如何在依赖项目中启用 EJB 注入(inject)

标签 java maven jakarta-ee glassfish ejb

我有一个 Java EE 项目,它实例化依赖项目中的对象实例。该依赖项目现在想要创建自己的 EJB 并将其注入(inject)到它的一个类中。依赖项目不引用父项目,但应在父项目的容器内运行。

当我部署父项目时,我在日志中看到一条消息,表明我的服务 Bean 已与父项目中的其余 Bean 一起被发现:

2014-04-28T21:30:56.240-0400|INFO: EJB5181:Portable JNDI names for EJB DependentProjectServiceBean etc.

但是当我尝试使用 @EJB 注释将该 bean 注入(inject)到依赖项目中时,什么也没有发生(它只是保留为 null)。

我一直在试图弄清楚如何正确配置这些项目,以便我可以在依赖项目中使用 EJB 和 JPA,但我觉得我不知道正确的搜索词,因为我没有任何东西发现他们似乎解决了这个问题。我在依赖项目中包含了与在父项目中相同的 Maven 依赖项,并且 Eclipse 的注释看起来很酷;他们只是部署后似乎什么也没做。

如何在我的依赖项目中启用 EJB 和 JPA?

编辑: 这是我正在使用的代码的粗略轮廓。

父级

public class ParentProjectClass {
    @EJB
    ParentServiceBean psb;

    public void cat(){
        psb.doStuff(); //no problems
        SomeDependentClass sdc = new SomeDependentClass();
        sdc.baz();
    }
}

依赖项目

public class SomeDependentClass {
    private AnotherDependentClass adc;

    public SomeDependentClass(){
        adc = new AnotherDependentClass();
    }
    public void baz(){
        adc.foo();
    }
}

public class AnotherDependentClass {
    @EJB
    DependentProjectServiceBean dpsb;

    foo(){
        dpsb.bar(); //NULL POINTER EXCEPTION
    }
}

@Stateless
public class DependentProjectServiceBean {
    public void bar(){  //bar   }
}

最佳答案

您无法在简单类(该类本身不是 EJB 或 JSF ManagedBean)中使用 @EJB 注释注入(inject) EJB。 最简单的解决方案是将依赖项目转换为 EJB 项目。如果您不能这样做,您可以尝试使用手动 JNDI 查找来注入(inject)它,这里是代码示例:

// Retrieve the initial context for JNDI.
Context context = new InitialContext();
// Retrieve the home interface using a JNDI lookup 
dpsb = (DependentProjectServiceBean) context.lookup("java:comp/env/ejb/DependentProjectServiceBean");

将 java:comp/env/ejb/DependentProjectServiceBean 替换为您的 JNDI 路径

关于java - 如何在依赖项目中启用 EJB 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23354067/

相关文章:

java - java中如何将文本区域转换为输入流?

javascript - 在基于 Maven 的项目中自动化 JavaScript 测试

java - jenkins与maven集成问题

jakarta-ee - Java EE 应用程序架构中的单例与无状态 bean

java - 关于java,解析器和映射器有什么区别?

java - 将 jquery mobile 与 java 一起使用,这可能吗?

java - 在 Jersey REST 请求/响应之间存储变量

java - Maven 外部依赖

javascript - 下拉列表显示所有元素,但无法选择

java - 获取用户坐标并比较距所需位置的距离的最简单方法