java - 在 Java EE 应用程序之间进行同步调用的最佳方式

标签 java jakarta-ee rmi message-queue esb

我有两个 Java EE Web 应用程序,它们将在同一物理服务器上发布,但在不同的网络地址上。

应用程序 A:监听公共(public) IP 地址上的端口,并在必要时同步调用应用程序 B。

应用 B:监听私有(private) IP 地址上的端口,并在必要时同步调用应用 A。

enter image description here

为了连接 APP A 和 APP B,我正在考虑以下替代方案。

  • RMI
  • 消息队列
  • 轻量级 ESB

请告诉我您是否发现其中任何一项有事实支持的明显优势,或者是否有其他我应该考虑的技术。

最佳答案

每种集成方法都有其优点和缺点,仅根据您提供的内容很难提出一种集成方法,但这里有一些提示:

  • 快速简单:如果您不介意高耦合,并且预计应用程序不会发生重大变化(例如数据库引擎,或替换为非 Java 系统),您可以使用 RMI 甚至 DB 过程调用。
  • 变化、可扩展性和可伸缩性:如果应用程序预计会经常变化(而且它们往往会这样做),那么 ESB 或消息队列会很棒,因为它们会产生松散耦合的架构。这也将为可扩展性腾出空间(例如,如果您有一个新的应用程序 C,则需要调用 A 或/和 B)
  • HTTP 可用性:如果应用程序之间可以进行 HTTP 通信,则 Web 服务是一种出色的集成方法。
  • 开发人员知识:您/团队熟悉哪些技术。

这些实际上是一些小提示,如果你想进一步研究,我强烈建议阅读Enterprise Integration Patterns这本书。

关于java - 在 Java EE 应用程序之间进行同步调用的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22174605/

相关文章:

Java 8 LocalDateTime 正在解析无效日期

java - 从二进制文件读取/写入

jakarta-ee - EE 6(GlassFish): how many containers?多少个单例?

java - 在java动态web项目中找不到图像

java - RMI 远程对象到 stub

java - java RMI 服务中的通用事务逻辑?

java - rmi java.security.policy 访问被拒绝

java - Google Cloud Memorystore 从 "App Engine Java Standard Environment"连接

java - 服务器-客户端不一致的结果

java - '$' 的 split() 函数不起作用