我可以在哪里将合格的CDI候选人放入Glassfish v3部署中?

时间:2011-08-16 09:02:11

标签: java java-ee-6 glassfish-3 jboss-weld

我在一个jar(a.jar)中有代码,其中包含@Inject X x

我想用另一个 jar(b.jar,一个有效的bean存档等)中的实现来满足注入。

据我了解,我无法在单独的WAR独立存档中部署a.jar和b.jar,因为这些是独立的CDI方式。我可以将b.jar放在Glassfish为所有部署提供的lib文件夹中(但这是“纯Java 6 EE”,这意味着我不能以与战争或耳朵相同的方式部署?)。我可以在一个放在lib中的EAR中提供b.jar以及a.war或a.jar,但我对此不熟悉。

我的问题是我有哪些选项可用于部署a.jar和b.jar 以便Glassfish(目前为3.0.1,但如果效果更好,我会考虑3.1.1)将正确解析这种依赖?我正在寻找一份详尽的清单。

(编辑:我更喜欢一种解决方案,其中b.jar可以独立于a.jar部署)

2 个答案:

答案 0 :(得分:1)

我认为一个好的选择是将a.jarb.jar放在项目的lib文件夹中。请告诉您是否认为它有缺点。

答案 1 :(得分:1)

我会看看是否可以将b.jar中的相关对象转换为EJB,从而有效地将b.jar转换为EJB 3'服务'。

然后,在a.jar(以及需要该服务的任何其他代码)中,我将使用CDI Producer方法执行JNDI查找,允许我像任何本地资源一样@Inject EJB。

或者,如果您也可以将a.jar转换为EJB 3'服务',那么来自b.jar的EJB可以由容器直接注入(使用Java EE @EJB或{{1注入)到@Resource的EJB。