【问题标题】:Is it possible to run RMI server in tomcat?是否可以在 tomcat 中运行 RMI 服务器?
【发布时间】:2015-10-14 23:04:37
【问题描述】:

我有两个 tomact 实例,在 Tomcat 7 上运行(称为 tomcat 1tomcat 2)。我需要安排分布式计算。服务器tomcat 1 应该调用tomcat 2 的VM 上的一些方法。

有可能吗?我知道 Tomcat 是一个 servlet 容器。它支持这样的事情吗?

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    RMI 服务器可以在 Tomcat 中运行,启动它的好地方是 ServletContextListener。

    使用 LocateRegistry.createRegistry(port),您甚至不需要外部 rmiregistry。

    现在人们会使用基于 HTTP 的协议(如 REST)在 Tomcat 等服务器中托管服务,但 RMI 仍然有效,并且比 HTTP 更快、更容易使用。

    【讨论】:

      【解决方案2】:

      是的,这是可能的,但您不在 Tomcat 上运行 RMI。您必须在服务器上运行 rmiregistry 并从您的 Tomcat 连接到此注册表。您的应用程序应该实现接口范围 Remote,并且它的实现类似于一般 RMI 应用程序。这可能有点难,因为您必须为 tomcat 1 注册服务两次,然后为 tomcat 2 注册服务,这可以通过配置或硬编码来完成。

      也许您应该考虑将您的 RMI 服务器作为 java 应用程序提供,并从 Tomcat 调用该方法或阅读有关 JMS 的信息,它是当今比 RMI 更常见的解决方案。

      【讨论】:

      • 你有证据证明最后的说法吗?为什么他必须注册他的服务两次?
      • 两次,因为我们必须为 name1 下的 tomcat 2 绑定 tomcat 1 上的 Remote 实现,并且必须为 name2 下的 tomcat 1 绑定 tomcat 2 上的实现。如果我们想从两个 tomcat 互相调用远程过程,我描述了示例。我不是 RMI 方面的专家,而且这个我的解决方案前段时间测试过,也许它可以绑定在一个服务名称下。我没有证据,这只是我对就业市场需要什么以及我在工作中使用什么的观察。
      • 这些都没有意义。每台主机只有一个注册表。如果 Tomcat 在同一个主机上,你只需要绑定一次,如果它们在不同的主机上,你根本无法绑定到远程注册表,至少在没有特殊措施的情况下是这样。非专家提供的一种可行的解决方案并不能说明它“必须”如何完成。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多