gpt4 book ai didi

jakarta-ee - Java EE 应用程序间通信

转载 作者:行者123 更新时间:2023-12-03 22:32:24 26 4
gpt4 key购买 nike

我们正在开发几个独立的应用程序/模块,我们将它们部署到 Glassfish 3.1.1 应用程序服务器上。在某些情况下,这些应用程序需要通过远程接口(interface)调用彼此的方法。打包这些远程接口(interface)的最佳实践是什么?例如。如果A需要调用B的远程接口(interface),是否将B的远程接口(interface)提取到一个单独的JAR文件中,与模块A一起打包?如果这个远程接口(interface)引用了一个实体类怎么办。你会把这个实体类和接口(interface)一起打包到这个JAR文件中吗?

如果您对此主题有任何反馈,请随时提出您认为应该如何完成的建议。

最佳答案

我在上一份工作中解决了这个问题。

这就是 EJB 的设计目的。 EJB 既有实现又有接口(interface)。该接口(interface)进入您的应用程序使用的客户端 jar:

@EJB
MyService myService;

实现被单独打包并安装在你的服务器的其他地方:

@Stateless
@Remote({MyService.class})
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class MyServiceBean implements MyService {
...
}

不应该让应用程序在 Java EE 中直接相互调用! (但在某些情况下,您可以)将 EJB 视为极其轻量级的单一用途服务,您可以在其中提取应用之间的通用业务逻辑。

您的问题听起来像是 AppA 调用 AppB 而 AppB 调用 AppA 的循环依赖情况。从 AppA 中提取 AppA 和 AppB 正在使用的业务逻辑并将其放入 EJB 中。对 AppB 做同样的事情。现在您有 2 个应用程序和 2 个 EJB,可以从其中任何一个应用程序调用通用业务逻辑。

简单吧?让我知道如何更好地解释这一点!

关于jakarta-ee - Java EE 应用程序间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8096783/

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