2011-03-03 81 views
1

我有一个RMI服务器导出一个“管理器”类。 RMI客户端连接到服务器,并检索“Manager”类的实例。然后,我调用“Manager.createBox()”,它创建一个框,然后调用“Manager.getBox(0)”来检索框。RMI实例化远程对象

现在,如果我对刚刚检索到的“Box”进行了任何更改,请对其进行修改,然后再次调用“Manager.getBox(0)”,然后再次获取原始框,而无需更改。我“承诺”我在客户端对Box进行的更改?或者,我需要向经理添加一个方法吗?

回答

2

如果Box是一个简单的可序列化的类,那么它的状态将被简单地序列化,在线上发送,并在调用getBox时在客户端上反序列化。客户因此修改了框的副本,而不是原来的副本。

如果希望修改后的方框位于服务器上,则将其发送回服务器(manager.modifyBox(box)),或将Box设置为远程对象(通过将其设置为远程接口Box,由BoxImpl具体类实现扩展UnicastRemoteObject)。