【问题标题】:Java inter-application communication in Tomcat load-balanced environmentTomcat 负载均衡环境中的 Java 应用间通信
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-07-26
      • 2013-02-05
      • 1970-01-01
      • 2017-04-12
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多