Tomcat负载均衡环境中的Java应用程序间通信

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (4)

我在Tomcat 7中部署了两个需要通信的Java 8 Web应用程序。应用程序A具有A1... An负载平衡的多个实例(多个Tomcat工作程序),而应用程序B具有单个实例。A当前可以通过B通过本地主机通过HTTP公开的SOAP Web服务启动与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知识?

提问于
用户回答回答于

答案是肯定的,RMI可以满足这一要求。应用程序A的每个实例都可以向应用程序B注册回调对象。应用程序B可以遍历所有已注册的回调对象并依次通知。

扫码关注云+社区

领取腾讯云代金券