gpt4 book ai didi

java - 在bean中注入(inject)多个远程EJB

转载 作者:行者123 更新时间:2023-12-01 17:58:16 25 4
gpt4 key购买 nike

在 Java EE 中,如果我有一个接口(interface):

@Remote
public interface MetaService {
ServiceData get();
}

我的耳朵里有 2 个实现:

@Stateless
public class Service1MetaService implements Calculator {
@Override
public ServiceData get() {...}
}
@Stateless
public class Service2MetaService implements Calculator {
@Override
public ServiceData get() {...}
}

我可以创建一个 bean,其中:

@Stateless
public class View {
@Inject
private Instance<MetaService> metaServices;

...
}

View中,字段metaServices将具有MetaService的2个实现。

我希望远程 bean 具有类似的功能。

所以假设,我有上面的接口(interface)和实现,但包装不同。

base.jar中,我有MetaService接口(interface)。这将打包到下面提到的所有后续应用程序中。

a.ear中,我有Service1MetaService实现,而在b.ear中,我有Service2MetaService实现,在 c.war 中,我有 View 类,它想使用这些实现。

但正如您所期望的,注入(inject)的 Instance 是空的(但不是 null)。有没有办法在我注入(inject)的 Instance 实例中找到远程 bean 引用,即使这些实现位于单独的应用程序中?

一件重要的事情是,在 View 类中,我不知道也不关心这些实现的数量,也不关心它们部署在其中的应用程序的名称。所以有我无法使用特定的 JNDI 字符串来获取这些引用。

P.S.:我应该尝试使用 JMS 等技术吗?这样我就可以在 JMS 代理上调用 add 方法,该方法发送请求并等待实现所述接口(interface)的所有应用程序的答复?

P.S.:澄清一下,我需要这个的原因实际上是为了获取我的应用程序服务器上正在运行的服务的数据。我更新了示例接口(interface)和实现,使其更加清晰。另外,如果我能够同步获取这些元数据,那就太好了,因此 JMS 不一定是首选,但我可能可以使其工作。

最佳答案

我成功说服自己放弃远程 EJB。嗯,这也要感谢 @chrylis-onstrike-,不过,我会选择使用 JMS 来实现此目的。

原因是我可以广播对我需要的点播数据的不同服务的请求,使我能够检查是否有新的在线服务或失败的服务。

感谢所有花时间帮助我的人。

关于java - 在bean中注入(inject)多个远程EJB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60678847/

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