gpt4 book ai didi

java - 通过 RMI 使用反序列化对象更新服务器对象

转载 作者:行者123 更新时间:2023-12-02 04:15:36 25 4
gpt4 key购买 nike

我在服务器上有一个对象,客户端可以在分布式系统中检索该对象。这一切都发生在本地计算机上,客户端通过 RMI 查找调用服务器对象。要点是服务器对象应该是客户端可以修改的单个对象。然而,在客户端反序列化后,它们都有不同的对象 ID。也就是说,它们似乎获得了一个新对象,即使它们都应该从服务器检索相同的对象。考虑到对象应该位于不同的机器上(每个客户端),这是有道理的。

我尝试在服务器对象上实现 hashcode 和 equals 方法,但客户端仍然获得不同的对象 ID。当客户端对反序列化的服务器对象执行操作时,原始服务器对象不会收到更改。我知道这一点是因为任何后续查找都会检索原始状态的服务器对象。

基本上我的问题是:如何让我的客户端通过对相应的反序列化对象执行客户端操作来更新原始服务器对象?当另一个客户端查看其反序列化对象的 getter 时,它必须看到其他客户端执行的所有更改。为了进一步澄清,尽管这些对象是在不同的机器上反序列化的,但我希望它们的行为就像它们是同一台机器上的同一个对象一样。

最佳答案

The point is that the server object is supposed to be one single object which clients can modify. However after it's deserialized at the clients, they all have a different object ID

重点是这不是远程对象,因此它会被序列化,这是您不希望看到的。

I want them to behave as if they were one and the same object on the same machine.

正是如此。您需要:

  1. 让它实现远程接口(interface)
  2. 通过扩展 UnicastRemoteObject(首选)或在构造时调用 UnicastRemoteObject.exportObject() 来导出它。

关于java - 通过 RMI 使用反序列化对象更新服务器对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com