繁体   English   中英

Jar存档中的Glassfish 3 EJB注入失败

[英]Glassfish 3 EJB Injection from the jar archive fails

在玻璃鱼3中,我对EJB注入有一个奇怪的问题。也许我只是不完全了解我的工作:)

所以这是一个问题:我的项目包含2个模块,这些模块将与gradle组装在一起。

  • 模块A
  • 模块B

模块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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM