我有几个导出 RMI 接口的服务。
他们过去通过创建自己的注册表(使用LocateRegistry.createRegistry
)并将其绑定在那里来提供此功能。然而,当服务被转移到在同一个虚拟机(Tomcat)中作为单独的应用程序运行时,这变得不可能了,因为由于某种原因,那里只能存在一个注册表。
我通过为所有服务使用中央注册表来解决这个问题。即便如此,我对注册表的多对象注册表角色并不真正感兴趣,只是它的入口点设施。然而,中央注册中心引入了更多的复杂性(例如,它必须首先启动,它必须具有它注册的服务的接口)。
有没有办法恢复每个服务独立提供其 RMI 接口的入口点的情况,同时让它们在同一个 VM 中运行(这是托管细节,不是设计的一部分)?