0

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

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

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

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

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

4

2 回答 2

1

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

于 2011-08-16T09:07:48.873 回答
1

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

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

或者,如果您也可以a.jar变成 EJB 3“服务”,那么 EJB 的 fromb.jar可以直接由容器(使用 Java EE@EJB@Resource注入)注入到a.jarEJB 中。

于 2011-08-16T10:41:50.190 回答