【发布时间】:2015-10-14 23:04:37
【问题描述】:
我有两个 tomact 实例,在 Tomcat 7 上运行(称为 tomcat 1、tomcat 2)。我需要安排分布式计算。服务器tomcat 1 应该调用tomcat 2 的VM 上的一些方法。
有可能吗?我知道 Tomcat 是一个 servlet 容器。它支持这样的事情吗?
【问题讨论】:
我有两个 tomact 实例,在 Tomcat 7 上运行(称为 tomcat 1、tomcat 2)。我需要安排分布式计算。服务器tomcat 1 应该调用tomcat 2 的VM 上的一些方法。
有可能吗?我知道 Tomcat 是一个 servlet 容器。它支持这样的事情吗?
【问题讨论】:
RMI 服务器可以在 Tomcat 中运行,启动它的好地方是 ServletContextListener。
使用 LocateRegistry.createRegistry(port),您甚至不需要外部 rmiregistry。
现在人们会使用基于 HTTP 的协议(如 REST)在 Tomcat 等服务器中托管服务,但 RMI 仍然有效,并且比 HTTP 更快、更容易使用。
【讨论】:
是的,这是可能的,但您不在 Tomcat 上运行 RMI。您必须在服务器上运行 rmiregistry 并从您的 Tomcat 连接到此注册表。您的应用程序应该实现接口范围 Remote,并且它的实现类似于一般 RMI 应用程序。这可能有点难,因为您必须为 tomcat 1 注册服务两次,然后为 tomcat 2 注册服务,这可以通过配置或硬编码来完成。
也许您应该考虑将您的 RMI 服务器作为 java 应用程序提供,并从 Tomcat 调用该方法或阅读有关 JMS 的信息,它是当今比 RMI 更常见的解决方案。
【讨论】: