gpt4 book ai didi

java - CDI 跨容器注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:28 24 4
gpt4 key购买 nike

我们无法找到从另一个容器注入(inject) SessionBean 的正确方法。

假设我们有两个ear文件earA和earB以及一个共享jar:

耳朵A

@Stateless
public class MyBean implements BeanInterface{...}

耳朵

@Stateless
public class OtherBean{
@Inject BeanInterface myBean;
}

apiJar

earA 和earB 中均存在包含BeanInterface 的jarfile

我们不想通过@EJB显式使用JNDI名称,因为earB将由外部客户实现和部署。

我们希望让earB 尽可能简单地通过BeanInterface 注入(inject)MyBean(并且对earA 的了解尽可能少)。

最佳答案

CDI 无法跨 EAR 工作。

您可以在 EAR B 中使用 @EJB(lookup=...) 来获取对 EAR A 中实现的 EJB 的引用。

在这种情况下,您不需要知道 EAR A 中的实现类,您只需要知道它的 JNDI 名称。您或许还应该使 EAR A 中的 EJB 公开远程接口(interface)。

如果您的两个 EAR 部署在不同的服务器实例上,您还需要一些供应商特定的配置来执行远程 JNDI 查找。

您还可以隐藏此 @EJB(lookup=...) 并使用 CDI 来注入(inject) EJB,方法如下: http://whoopdicity.blogspot.ro/2014/07/developing-dynamic-jee-service-client.html

关于java - CDI 跨容器注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25929395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com