在 Glassfish v3 部署中,我可以在哪里放置符合 CDI 资格的候选人?

发布于 2024-11-29 15:46:32 字数 497 浏览 1 评论 0原文

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

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

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

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

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

I have code in one jar (a.jar) which contains an @Inject X x.

I want to satisfy the injection with an implementation in another jar (b.jar, being a valid bean archive etc.).

To my understanding, I cannot deploy a.jar and b.jar in separate WAR standalone archives as these are independent CDI-wise. I may be able to put b.jar in the lib folder that Glassfish provides to all deployments (but is this "pure Java 6 EE" and this mean I cannot deploy in the same way as a war or an ear?). I may be able to provide b.jar in an EAR placed in lib along with a.war or a.jar but I am unfamiliar with this.

My question is which options do I have for deploying a.jar and b.jar so that Glassfish (currently 3.0.1 but I will consider 3.1.1 if it works better) will correctly resolve this dependency? I am looking for an exhaustive list.

(EDIT: I'd prefer a solution where b.jar can be deployed independently of a.jar)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

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

I think a good option is putting a.jar andb.jar in the lib folder of your project. Please tell if you think it has drawbacks.

国粹 2024-12-06 15:46:32

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

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

或者,如果您还可以将 a.jar 转换为 EJB 3“服务”,则来自 b.jar 的 EJB 可以直接由容器注入(使用 Java EE @EJB@Resource 注入)到 a.jar 的 EJB 中。

I would see if I could turn the relevant objects in b.jar into EJBs, effectively turning b.jar into a EJB 3 'service'.

Then, in a.jar (and any other code that needs the service), I would use a CDI Producer method to perform JNDI lookup, allowing me to @Inject the EJB just like any local resource.

Alternatively, if you can also turn a.jar into an EJB 3 'service' then EJB's from b.jar can be injected directly by the container (using Java EE @EJB or @Resource injection) into a.jar's EJBs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文