如何通过 RMI 移动对象?

How to move objects by RMI?

有没有一种简单、优雅和聪明的方法可以在不同的 RMI 实例之间移动对象?

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

我猜,我还要克隆并销毁对象的所有对象?

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

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

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

如果您的对象实现了“Remote”接口,则它通过引用传递

如果您的对象没有实现“Remote”接口,它是按值传递.

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

Java documentation

在 RMI 中传递对象

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

管理参数和 return 值传递方式的规则如下:

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

本地对象通过拷贝传递,使用对象序列化。默认情况下,复制所有字段,但标记为静态或瞬态的字段除外。默认序列化行为可以在 class-by-class 的基础上被覆盖。