[英]Glassfish 3 EJB Injection from the jar archive fails
在玻璃鱼3中,我对EJB注入有一个奇怪的问题。也许我只是不完全了解我的工作:)
所以这是一个问题:我的项目包含2个模块,这些模块将与gradle组装在一起。
模块A是通常的glassfish模块,也可以正常工作。 模块B包含通用人员。 模块B也是A的依赖项。模块A将作为* .war存档部署到glassfish,模块B在相应的lib文件夹中作为* .jar存档:
module-a.war及其内部../lib/module-b.jar
我想要的是:在模块B中创建一个“通用”无状态bean,并在模块A中使用它。但是它不起作用...
在模块BI中创建了一个bean:
@Stateless
public class GeneralPurposeBean {}
我尝试如下在模块A中使用它:
...
@EJB
private GeneralPurposeBean genPurpBean;
...
所以我已经提到GeneralPurposeBean的是在* .jar中
每当我尝试使用Bean时,它都会失败,并带有以下异常:
javax.ejb.CreateException: Could not create stateless EJB
当我将bean移到Module A时,它可以正常工作,但是我想与其他模块共享该bean,这将在以后开发。 有人可以向我解释这里出了什么问题吗? 因此,该bean将被识别,但无法创建。 我通过调试发现的是
JCDIServiceImpl#_createJCDIInjectionContext
无法将Bean识别为企业Bean。 因此,*。war中可直接访问的所有内容都会被正确创建,但* .jar文件中的内容不会被正确创建。
对于这种情况,有人有同样的问题:
如果将您的模块之一视为依赖项,并且此模块包含要注入的EJB bean,那么我的问题的解决方案是将/META-INF/beans.xml文件放入模块中。 否则,容器无法将bean识别为EJB。
而已。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.