如何通过RMI移动对象?

时间:2015-09-28 14:40:58

标签: java rmi

是否有一种简单,优雅和聪明的方法在不同的RMI实例之间移动对象?

目前,我将通过克隆接收RMI服务器中的对象然后销毁发送RMI客户端中的原始文件(或从RMI服务器A移动到RMI服务器B时的其他方式)来执行此任务。

我想,我还必须克隆并销毁对象的所有对象?

2 个答案:

答案 0 :(得分:1)

没有必要克隆收到的对象。

创建对它的引用就足够了。

收到的对象已经是rmi调用中使用的原始对象(在服务器a中)的副本(在服务器b中)。

答案 1 :(得分:1)

如果您的对象实现" 远程"界面,通过引用传递

如果您的对象没有实施" 远程"界面,按值传递

您必须根据对象的类型做出决定。

Java documentation

在RMI中传递对象

来自远程方法的参数或返回值几乎可以是任何类型,包括本地对象,远程对象和原始数据类型。

控制参数和返回值传递方式的规则如下:

远程对象基本上是通过引用传递的。远程对象引用是一个存根,它是一个客户端代理,它实现远程对象实现的完整远程接口集。

本地对象通过副本传递,使用对象序列化。默认情况下,除了标记为静态或瞬态的字段外,将复制所有字段。可以在逐个类的基础上覆盖默认的序列化行为。