我有两个 Java EE Web 应用程序,它们将在同一物理服务器上发布,但在不同的网络地址上。
应用程序 A:监听公共(public) IP 地址上的端口,并在必要时同步调用应用程序 B。
应用 B:监听私有(private) IP 地址上的端口,并在必要时同步调用应用 A。
为了连接 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/