【问题标题】:RMI Instantiate Remote ObjectsRMI 实例化远程对象
【发布时间】:2011-03-03 09:43:19
【问题描述】:

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

现在,如果我对刚刚检索到的那个“盒子”进行任何更改,修改它,然后再次调用“Manager.getBox(0)”,我会再次得到原始盒子而不做任何更改。我怎么能“提交”我刚刚在客户端对 Box 所做的更改?或者,我需要向管理器添加方法吗?

【问题讨论】:

    标签: java rmi


    【解决方案1】:

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

    如果您希望修改后的盒子在服务器上,那么要么将其发送回服务器(manager.modifyBox(box)),要么使 Box 成为远程对象(通过使其成为远程接口 Box,由 BoxImpl 具体实现类扩展 UnicastRemoteObject)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多