0

我有一个问题:我正在使用 RMI 在服务器和客户端之间进行通信。

public class RemoteMap
    extends java.rmi.server.UnicastRemoteObject
    implements RemoteMapInterface {

 private TreeMap<String, GeneralSprite> sprites;
...

这是我的远程对象。但我希望客户端能够更改此对象的内容。并且在更改之后服务器可以基于此执行一些操作。

客户端示例:

map = (RemoteMapInterface) (registry.lookup("map"));
map.getSprites.get("object1").setDx(-1);

我在 GeneralSprite 上使用可串行化,但我猜它是按值传递的。因此,当我对 GeneralSprite 进行一些更改时,它并没有传输到服务器。我是否也必须将 GeneralSprite 设为 Remote 对象?或者甚至有可能?

提前谢谢,对不起我的英语不好,我希望你能理解。

4

1 回答 1

0

所有不实现Remote接口的东西,无论是直接还是间接,都将被序列化以用于远程方法调用。所以这是一种“复制调用”行为。您可以实现一个 new Mapwhich implements Remote,但您也可以添加一个类似于setDx(String spriteName, int value)您的方法并在服务器端RemoteMapInterface实现它。sprites.get(spriteName) .setDx(value);

于 2013-10-25T15:47:21.610 回答