注入EJB

时间:2012-02-01 11:55:12

标签: glassfish java-ee-6 cdi

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

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

然后我有一个依赖于lib的项目,它依赖于创建web服务的接口HelloService,注释为@WebServiceHello作为注释为{{1}的成员}}

这似乎不起作用。由于bean必须具有no-args构造函数,因此我将@EJB创建为bean,将HelloBean创建为具有单个HelloImpl构造函数的Pojo,并带有参数。我尝试将@InjectHello同时注入HelloImpl HelloBean@Inject@Resource。似乎没有用。

如果我@EJB @InjectHello进入HelloImpl,我会获得NPE。 如果我HelloBean @ResourceHello,我会收到HelloImpl。 如果我Lookup failed for delegate @EJB,则出现同样的错误。 HelloImpl @EJB我获得了stackoverflows(可以理解)。

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

如何将带有Hello构造函数的Pojo放入bean中?或者我的计划存在根本缺陷?

1 个答案:

答案 0 :(得分:2)

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