在 Glassfish v3 部署中,我可以在哪里放置符合 CDI 资格的候选人?
我在一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我认为一个不错的选择是将
a.jar
和b.jar
放在项目的lib
文件夹中。如果您认为它有缺点,请告诉我们。I think a good option is putting
a.jar
andb.jar
in thelib
folder of your project. Please tell if you think it has drawbacks.我想看看是否可以将
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 turningb.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 fromb.jar
can be injected directly by the container (using Java EE@EJB
or@Resource
injection) intoa.jar
's EJBs.