我读到可以使用rmiregistry或JNDI作为RMI的目录服务。据我所知,远程对象的存根被存储并与这样一个目录服务中的密钥相关联。
现在我的问题是,存根是以序列化形式存储还是作为“活动”对象存储在rmiregistry/JNDI中?
如果它存储序列化,那么分布式垃圾收集不会失败吗?
发布于 2016-08-30 21:32:56
我读到可以使用rmiregistry或JNDI作为RMI的目录服务。
不,您没有。您读到可以使用注册表作为目录服务,使用JNDI作为它的API。
据我所知,远程对象的存根被存储并与这样一个目录服务中的密钥相关联。
对,是这样。
现在我的问题是,存根是以序列化形式存储还是作为“活动”对象存储在rmiregistry/JNDI中?
它被序列化到注册表,并在到达时反序列化(解编组)。在注册表内部,它是一个普通的Java对象。
如果它是序列化存储的..。
事实并非如此。
JNDI真的和这件事无关。
发布于 2021-07-29 16:40:03
RMI注册表将远程对象存储为“活动”对象的原因是,RMI注册表只是一个常规的RMI对象。它通过java.rmi.registry.Registry接口公开其操作,这是一个常规的java.rmi.Remote接口。
实际上,与常规的RMI对象有一个小的区别-- RMI注册表获取导出作为一个永久对象--它是一个内部选项,使一个对象不受分布式垃圾收集的约束。
https://stackoverflow.com/questions/39231183
复制相似问题