【问题标题】:Communication between Java web applicationsJava Web 应用程序之间的通信
【发布时间】:2015-07-14 10:23:54
【问题描述】:

我在同一台服务器 (Wildfly) 上部署了多个 Java Web 应用程序。

他们都应该使用一个 WebSocket 实现来向用户发送消息(对象,而不是纯文本)。

编辑: WebApp1-3 是具有业务逻辑的应用程序。 WebApp4 的唯一目的是根据其他 WebApp 生成的消息更新浏览器中的 Primefaces 面板。对于误导性的插图,我们深表歉意。

WebApp1
WebApp2    -->    ???    -->   WebApp4 (WebSocket-Server)   -->    JS/Browser
WebApp3

使 WebApp4 可用于其他应用程序的最佳方式/模式/实现是什么? (RMI、JMS、WebSocket、WebService、......?)

【问题讨论】:

  • 共享数据库怎么样?
  • 适用于交换数据,但我应该如何通知 WebSocket-Endpoint 新消息?
  • @sinclair 如何将其发布到端点并且所有客户端都应该订阅该频道/主题?

标签: java web-applications


【解决方案1】:

对于公开服务的一般方式,我的建议是公开 REST 服务,因为它们比 SOAP Web 服务更简单并且容易实现互操作性(如果将来 PHP 或 RUBY webapp 需要使用您的服务,那会容易得多REST 接口而不是基于 RMI 或 JMS 的接口)。 REST 服务的内容可能会有所不同,我建议您将 XML 或 JSON 作为一种通过 http REST 服务传输信息的方式。

【讨论】:

    【解决方案2】:

    如果所有 web 应用程序都在同一台服务器上,您应该将请求从一个服务器转发到另一个服务器。从 webapps 1-3 的角度来看,他们不需要知道他们的传入请求是来自 webapp 4 还是来自外部(看起来他们没有连接到外部)。当然,您可以在转发请求之前随意更改请求 - 或完全放弃它们,例如在身份验证失败时。

    在 tomcat 中执行此操作:https://stackoverflow.com/a/8951090/15472

    在转发请求时,外部客户端完全不知道webapps 1-3的存在——就客户端而言,它已经向webapp 4发送了一个请求,它会认为它正在接收来自webapps 4的响应同一台服务器。

    您可能需要配置您的网络服务器以允许此类调用,但我不熟悉 WildFly。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多