是否有一种简单,优雅和聪明的方法在不同的RMI实例之间移动对象?
目前,我将通过克隆接收RMI服务器中的对象然后销毁发送RMI客户端中的原始文件(或从RMI服务器A移动到RMI服务器B时的其他方式)来执行此任务。
我想,我还必须克隆并销毁对象的所有对象?
答案 0 :(得分:1)
没有必要克隆收到的对象。
创建对它的引用就足够了。
收到的对象已经是rmi调用中使用的原始对象(在服务器a中)的副本(在服务器b中)。
答案 1 :(得分:1)
如果您的对象实现" 远程"界面,通过引用传递。
如果您的对象没有实施" 远程"界面,按值传递。
您必须根据对象的类型做出决定。
在RMI中传递对象
来自远程方法的参数或返回值几乎可以是任何类型,包括本地对象,远程对象和原始数据类型。
控制参数和返回值传递方式的规则如下:
远程对象基本上是通过引用传递的。远程对象引用是一个存根,它是一个客户端代理,它实现远程对象实现的完整远程接口集。
本地对象通过副本传递,使用对象序列化。默认情况下,除了标记为静态或瞬态的字段外,将复制所有字段。可以在逐个类的基础上覆盖默认的序列化行为。