我有两个tomact实例,在Tomcat 7
上运行(称之为tomcat 1
,tomcat 2
)。我需要安排分布式计算。服务器tomcat 1
应该在tomcat 2
的VM上调用某种方法。
甚至可以吗?我知道Tomcat是一个servlet容器。它支持这样的东西吗?
答案 0 :(得分:1)
是的,这是可能的,但您不能在Tomcat上运行RMI。您必须在服务器上运行rmiregistry并从Tomcat连接到此注册表。您的应用程序应该实现接口范围Remote,以及它在一般RMI应用程序中的实现。这可能有点困难,因为你必须为tomcat 1注册一次你的服务两次,对tomcat 2注册第二次,它可以通过配置或硬编码来完成。
也许您应该考虑将您的RMI服务器作为Java应用程序提供,并从Tomcat调用那里的方法或阅读有关JMS的信息,这是比RMI更常见的解决方案。
答案 1 :(得分:1)
RMI 服务器可以在 Tomcat 中运行,启动它的好地方是 ServletContextListener。
使用 LocateRegistry.createRegistry(port),您甚至不需要外部 rmiregistry。
如今,人们会使用基于 HTTP 的协议(如 REST)在 Tomcat 等服务器中托管服务,但 RMI 仍然有效,并且比 HTTP 更快、更易于使用。