我正在尝试评估Glassfish 3.1上的CDI,尽管我已经完成了使其运行良好,当我试图将我的代码拆分为单独的部署模块时,我得到一个奇怪的错误。更具体地说:
我在同一个实用程序项目中捆绑了两个类(假设是CommonLib.jar
);类名是UserDatabase
和UserDatabaseEntityManager
,其定义如下(在此消息末尾的PS中)。
我还有一个带有EJB3.1模块的EAR。
当我选择将CommonLib.jar
部署为EAR的“捆绑库”时,我收到以下错误:
部署期间发生错误:加载应用时出现异常:
WELD-001408
类型[EntityManager
]的不满意依赖关系,注入点[[field] {{1}具有限定符[@UserDatabase
] }]。有关详细信息,请参阅@UserDatabase @Inject com.test.TestEJB.itemPersistenceEm
。
与上面相同的错误当我将CommonLib.jar部署为共享库(在server.log
下复制的jar文件)时,我也得到了
但是,如果我选择在EJB项目中只有两个类($glasshfish_installation_path/domains/domain1/lib
和UserDatabase
)(因此它们在EJB模块中编译),那么注入工作正常。
我是否面临过类加载器问题?我有什么想法可以解决这个问题吗?
答案 0 :(得分:3)
只是一个猜测,因为几天前我遇到了与Glassfish和CDI非常相似的问题:每个 JAR中是否有beans.xml
,即{{1}和EJB JAR,以便CDI扫描它们吗?
我的问题是因为我认为将CommonLib.jar
放入EAR就足够了,事实并非如此。
答案 1 :(得分:0)
听起来您遇到了我们发现的一些Glassfish CDI集成问题while working on Seam 3。它可能是其中的几个,所以你必须看看它可能是哪一个。尝试在JBoss AS7或Apache TomEE上进行测试,看看是否还有问题。