java - 单个 RMI 服务的简单入口点?

标签 java service rmi rmiregistry

我有几个导出 RMI 接口(interface)的服务。

他们过去常常通过创建自己的注册表(使用 LocateRegistry.createRegistry)并将其绑定(bind)到那里来提供此服务。然而,当服务被移动为在同一 VM (Tomcat) 中作为单独的应用程序运行时,这变得不可能了,因为出于某种原因,那里只能存在一个注册表。

我通过对所有服务使用中央注册表来解决这个问题。即便如此,我对注册表的多对象注册表角色并不真正感兴趣,只对它的入口点设施感兴趣。然而,中央注册表引入了更多的复杂性(例如,它必须首先启动,它必须具有它注册的服务的接口(interface))。

有没有办法恢复每个服务独立提供其 RMI 接口(interface)的入口点,同时让它们在同一 VM 中运行(这是托管细节,而不是设计的一部分)的情况?

最佳答案

我忘了我问过 a similar question已经(出于不同的原因,减少代码,在我将服务一起移动到一个 VM 之前),第一个答案提出了一种绕过注册表的方法:

Use UnicastRemoteObject, serialize the stub obtained when you export the object, and use a shared file, or a socket, or sneakernet, to make the stub available to clients.

关于java - 单个 RMI 服务的简单入口点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399408/

相关文章:

java - Spring Entity使用Service,可能存在设计缺陷,但还是

angular - Angular 2+ 中的服务和组件有什么区别?

java - RMI远程连接失败

java - 如何在 HADOOP 运行时生成多个文件名?

java - 需要帮助来理解此代码以找到给定数字中 1 的位置

service - DDD : is it ok to inject a Service into an Entity

java - LocateRegistry.createRegistry() 不能使应用程序保持 Activity 状态

java - RemoteObject方法返回值

java - 当在容器中使用 BufferedImage 时,JButton 不在正确的位置

java - 使用Java解析FORTRAN输出文件