【问题标题】:WildFly: is it possible to communicate between non-ejb services of 2 ears?WildFly:是否可以在 2 个耳朵的非 ejb 服务之间进行通信?
【发布时间】:2017-12-11 14:31:39
【问题描述】:
鉴于我在 WildFly 实例上部署了 2 个耳朵。我想在他们之间建立一些通信。对我来说似乎最舒服的方法是使用一些普通的豆子。
“bean”不是指 ejb-bean,因为我不使用 ejb。这是很重要的一点。对我来说最好的选择是 Spring bean。
无论如何,Spring bean,或者只是某个 Java 类的某个实例,我想在 both 耳朵的内存中拥有某个 Java 对象的 shared 实例,部署在我的 WildFly 上。
有可能吗?
如果没有,有哪些选择?
【问题讨论】:
标签:
java
jakarta-ee
jboss
wildfly
ear
【解决方案1】:
在standalone(-full).xml中声明一个队列,两个topic进行双向通信,让耳朵相互提交和处理消息。
【解决方案2】:
这通常不是我推荐的,因为它紧密耦合了应用程序。我的一般建议是在应用程序之间使用某种远程处理。
话虽如此,有几种方法可以实现这一目标。首先,您必须确保两个 EAR 使用相同的共享类。最简单的方法是将它们移动到 JBoss 模块并在您的 EAR 中声明一个依赖项。重要的是类不在 EAR 中。然后你必须以某种方式注册对象,JNDI 和 JMX 是明显的候选者。
EJB 调用也应该是可能的,但共享类的相同规则适用(向 EJB 添加接口,在 EAR 之间共享接口,仅通过接口引用 EJB)。有多种方法可以使 EJB 对 Spring 可用,最明显的一种是工厂 bean。