Glassfish 注入EJB
我正在尝试将Guice注入项目转换为JavaEE项目,即在glassfish上运行 我有一个lib项目,它定义了一个接口Hello,用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必须有一个无参数构造函数,所以
@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文件。可能是的重复