【问题标题】:Have one Java web app talk to another in a Tomcat container让一个 Java Web 应用程序在 Tomcat 容器中与另一个 Web 应用程序通信
【发布时间】:2016-08-01 08:35:50
【问题描述】:

我有两个 Web 应用程序(打包为 WAR)部署到 Tomcat 7。两者都是简单的 Java 应用程序。

一种非常简单的方式我希望一个 web 应用可以随时将简单的字符串变量传递给另一个应用。

例如,应用 A 对应用 B 说“这是一个字符串,这是另一个字符串,还有另一个……”等等。

目前看起来 RMI 可能是一个不错的方法 - 应用 B 可以公开一个方法 passMeAString(String string),而应用 A 可以通过 TCP 调用它并传递字符串。这也可能很好,因为外部没有 TCP 访问,因此外部世界将无法调用该方法。

这是一个好方法吗?有没有更简单的方法?当然,公开一个公共接口(向全世界)不是一种选择。

另外,只是为了帮助我,示例将非常有帮助。

【问题讨论】:

  • 只需使用带参数的简单http
  • "这是一个好方法吗?有没有更简单的方法?"我认为这不是最理想的,因为它在两个应用程序之间强加了依赖关系,并且您会以某种方式重新发明轮子。也许您应该考虑使用(本地可访问的)REST-API 或 MessageQueue(其中有很多实现)。
  • 使用 RMI,您还公开了一个接口,我不确定我是否理解您的公共接口有什么问题,您能澄清一下吗?
  • @NicolasFilotto 我想人们对“公共”是什么感到困惑。当我读到它时,OP 不希望从“世界”访问该功能,而只能在同一个 tomcat 上的两个应用程序之间访问。所以恕我直言,“隐私”必须作为应用程序在另一个层面上实施。否则,公共接口必须在容器级别对外界“隐藏”。
  • @Fildor 正是我的意思,感谢您代表我澄清

标签: java tomcat web-applications tcp


【解决方案1】:
  1. 如果您的服务不会被第三方使用并且您期望性能,那么您可以继续使用 RMI(JavaJava 通信和序列化很方便。)
  2. 如果您正在考虑您的服务需要与其他方通信,那么您必须将其公开为 REST 服务并使用基本的 Apache Http 客户端调用它(您可以使用 Aysync / sync )。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-29
    • 2016-06-26
    • 1970-01-01
    • 2016-06-24
    相关资源
    最近更新 更多