【问题标题】:Injecting into EJBs注入 EJB
【发布时间】:2012-02-01 11:55:12
【问题描述】:

我正在尝试将 Guice 注入项目转换为 Java EE 项目,即在 glassfish 上运行。

我有一个 lib 项目,它定义了一个接口,Hello,用 @Remote 注释。然后我有一个 impl 项目,它有一个 bean HelloBean,用 @Stateless 注释,以及一个带有参数和 @Inject 的构造函数。

然后我有一个依赖于 lib 的项目及其创建 web 服务的接口,HelloService,用@WebService 注释,Hello 作为用@EJB 注释的成员。

这似乎不起作用。由于 bean 必须有一个无参数的构造函数,我将 HelloBean 创建为一个 bean,并将 HelloImpl 创建为一个带有单个 @Inject 构造函数和参数的 Pojo。然后我尝试使用@Inject@Resource@EJBHelloHelloImpl 注入HelloBean。似乎没有一个工作。

如果我将 @Inject HelloHelloImpl 转换为 HelloBean,我会得到 NPE。 如果我@ResourceHelloHelloImpl,我会得到一个Lookup failed for delegate。 如果我@EJBHelloImpl,同样的错误。 @EJB Hello 我得到了stackoverflows(可以理解)。

我确实想使用构造函数注入,因为我觉得这是一种更正确的创建类的方法(一旦构造它们总是有效的)。但我不明白如何将 CDI 和 EJB 结合起来。

如何将带有@Inject 构造函数的 Pojo 放入 bean?还是我的计划存在根本缺陷?

【问题讨论】:

标签: glassfish java-ee-6 cdi


【解决方案1】:

更好的方法是定义一个带有@Inject 注解的初始化方法。任何参数都将是注入点,并应通过 CDI 提供。您也可以使用构造函数来执行此操作。确保你也有 WEB-INF/beans.xml。

【讨论】:

  • 谢谢,我错过了 beans.xml 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 2012-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-25
相关资源
最近更新 更多