【发布时间】:2019-09-24 09:18:44
【问题描述】:
我在 Tomcat 7 中部署了两个需要通信的 Java 8 Web 应用程序。应用程序 A 有多个负载均衡的实例(多个 Tomcat 工作者,A1... An),应用程序 B 有一个实例。 A 目前可以通过 B 公开的 SOAP Web 服务通过 localhost 通过 HTTP 发起与 B 的通信。
B 现在需要启动与 A 的所有实例的通信。由于 A 是负载平衡的,B 不能使用 HTTP,因为 A1... An 都通过同一个 URL 访问,而 B 无法控制哪个实例将接收其请求。
理想的解决方案可能类似于 Web 套接字连接 - A 的每个实例都会与 B 建立持久连接,而 B 会将数据推送到每个“订阅者”。
考虑到
- A 和 B 都是 Java 8 应用程序
- 两者都部署在同一个 Tomcat 安装中,并且
- 非 Java 应用程序无需与 B 通信
是否有满足此要求的策略?
我知道 RMI 可用,但我不知道它是否支持我的要求。在 RMI 中,B 是否需要 A 的每个实例的先验知识,以及唯一标识它们的方法?是否可以由 A 的每个实例建立双工连接以避免 B 需要 A 的任何知识?
【问题讨论】:
标签: java tomcat soap load-balancing rmi