CDI WELD来自jar中的META-INF中的Beans.xml阻塞了项目WEB-INF中的一个

时间:2017-09-07 14:27:37

标签: java cdi weld

根据我放置beans.xml的位置,在我的项目中,CDI要么在lib jars中找到@Named注释类,要么在主项目中找到@Alternative注释类。我无法弄清楚将它们放在哪里工作。

构建时,我有一个core.jar,它有一些@Default注释类和一些@Named注释类。

core.jar位于我项目的web-inf / lib中。

在该项目中,根据环境构建,我使用一些@Alternative注释类,这些类在web项目的beans.xml中指定(在WEB-INF中)

所以,我有2个beans.xml

在构建并放置在项目lib AND中的core.jar的META-INF中的

1 部署的战争项目的WEB-INF中的1(指定备选方案)

在这些位置使用beans.xml文件时,beanhandler找不到beans.xml中指定的替代方法(战争的web-inf中的替代方法)

当我从jar依赖项中删除META-INF中的beans.xml并重新部署时,替代方法工作正常(奇怪)但是后来找不到@Named带注释的类...

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

From CDI 1.1 onwards the alternative can be enabled for the whole
 application using @Priority annotation.

alternatives中所述,您不需要依赖beans.xml作为备选方案的激活点。