RMI 通信期间单例类的序列化
Posted
技术标签:
【中文标题】RMI 通信期间单例类的序列化【英文标题】:Serialization of Singleton Classes during RMI communcation 【发布时间】:2013-10-04 19:24:34 【问题描述】:虽然我正在阅读 readResolve 方法的解释,但很多参考资料都解释说,当单例类被反序列化而该类的对象被序列化并通过 RMI 传输时,该方法将有助于保证单例属性。
现在我的问题是,当 RMI 调用发生时,单例类对象将通过不同的 JVM(具有不同的类加载器)传输,因此在反序列化之后,我们将有另一个单例类实例(在不同的 JVM 中)。我说的对吗?
那么在 RMI 调用的上下文中,实现 readResolve 方法有什么用?
【问题讨论】:
【参考方案1】:因此,如果您再次发送它,它会解析为已经存在的那个。这可能与您的意图相反。不要在 RMI 中使用单例来迷惑自己。
【讨论】:
所以你的意思是说,readResolve 确保在单个 JVM 中维护单例属性?如果 readResolve 方法不在该类中,则每次我们在 RMI 客户端上进行反序列化时,它都会创建不同的实例。我说的对吗? 我就是这么说的。我不喜欢这种“你的意思是说”的游戏。以上是关于RMI 通信期间单例类的序列化的主要内容,如果未能解决你的问题,请参考以下文章