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

时间:2019-05-06 18:03:07

标签: java tomcat soap load-balancing rmi

我在Tomcat 7中部署了两个需要通信的Java 8 Web应用程序。应用程序A有多个实例(负载均衡的多个Tomcat工作器,circle1 and circle2 change Radius(10) circle1 and circle2 and rectangle1 change StrokeColor(Color.red) and StrokeWidth(4) // This changes the 3 shapes' stroke color and stroke width. ),而应用程序B有一个实例。当前,A可以通过HTTP通过localhost通过B公开的SOAP Web服务启动与B的通信。

B现在需要启动与A的所有实例的通信。由于A是负载均衡的,B无法使用HTTP,因为Unit都是通过相同的URL访问的,并且B无法控制哪个实例将接收其请求。

理想的解决方案可能类似于Web套接字连接-A的每个实例都将与B建立持久连接,而B会将数据推送到每个“订户”。

给出

  • A和B都是Java 8应用程序
  • 两者都部署在同一Tomcat安装中,并且
  • 非Java应用程序无需与B进行通信

是否有满足此要求的策略?

我知道RMI可用,但是我不知道它是否支持我的要求。在RMI中,B是否需要先了解A的每个实例,并需要一种唯一标识它们的方法? A的每个实例都可以建立双工连接以避免B要求A的任何知识吗?

1 个答案:

答案 0 :(得分:0)

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