Glassfish 注入EJB

Glassfish 注入EJB,glassfish,java-ee-6,cdi,Glassfish,Java Ee 6,Cdi,我正在尝试将Guice注入项目转换为JavaEE项目,即在glassfish上运行 我有一个lib项目,它定义了一个接口Hello,用@Remote注释。然后我有一个impl项目,它有一个bean,HelloBean,用@Stateless注释,还有一个带参数和@Inject的构造函数 然后我有一个was项目,它依赖于库及其接口来创建一个Web服务,HelloService,用@webservice注释,Hello作为成员用@EJB注释 这似乎不起作用。因为bean必须有一个无参数构造函数,所以

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

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

然后我有一个was项目,它依赖于库及其接口来创建一个Web服务,
HelloService
,用
@webservice
注释,
Hello
作为成员用
@EJB
注释

这似乎不起作用。因为bean必须有一个无参数构造函数,所以我将
HelloBean
创建为bean,将
HelloImpl
创建为带有单个
@Inject
构造函数和参数的Pojo。然后我尝试将
Hello
HelloImpl
注入
HelloBean
,同时使用
@Inject
@Resource
@EJB
。似乎都不管用

如果我
@将
你好
HelloImpl
注入
HelloBean
,我会得到一个NPE。 如果我
@Resource
Hello
HelloImpl
,我将获得代理的
查找失败。
如果我
@EJB
HelloImpl
,则会出现相同的错误
@EJB
你好
我得到了堆栈溢出(可以理解)

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


如何在bean中使用
@Inject
构造函数获得Pojo?还是我的计划根本上有缺陷?

更好的方法是定义一个用@Inject注释的initialize方法。任何参数均为注入点,应通过CDI提供。您也可以使用构造函数来实现这一点。确保您也有WEB-INF/beans.xml。

谢谢,我丢失了beans.xml文件。可能是的重复