如何通过 RMI 移动对象?
How to move objects by RMI?
有没有一种简单、优雅和聪明的方法可以在不同的 RMI 实例之间移动对象?
目前,我将通过在接收 RMI 服务器中克隆对象然后在发送 RMI 客户端中销毁原始对象(或从 RMI 服务器 A 移动到 RMI 服务器 B 时采用其他方式)来执行此任务。
我猜,我还要克隆并销毁对象的所有对象?
没有必要克隆接收到的对象。
创建对它的引用就足够了。
接收到的对象已经是 rmi 调用中使用的原始对象(在服务器 a 中)的副本(在服务器 b 中)。
如果您的对象实现了“Remote”接口,则它通过引用传递。
如果您的对象没有实现“Remote”接口,它是按值传递.
您必须根据对象的类型做出决定。
在 RMI 中传递对象
远程方法的参数或return值几乎可以是任何类型,包括本地对象、远程对象和原始数据类型。
管理参数和 return 值传递方式的规则如下:
远程对象本质上是通过引用传递的。远程对象引用是一个存根,它是一个客户端代理,实现了远程对象实现的完整远程接口集。
本地对象通过拷贝传递,使用对象序列化。默认情况下,复制所有字段,但标记为静态或瞬态的字段除外。默认序列化行为可以在 class-by-class 的基础上被覆盖。
有没有一种简单、优雅和聪明的方法可以在不同的 RMI 实例之间移动对象?
目前,我将通过在接收 RMI 服务器中克隆对象然后在发送 RMI 客户端中销毁原始对象(或从 RMI 服务器 A 移动到 RMI 服务器 B 时采用其他方式)来执行此任务。
我猜,我还要克隆并销毁对象的所有对象?
没有必要克隆接收到的对象。
创建对它的引用就足够了。
接收到的对象已经是 rmi 调用中使用的原始对象(在服务器 a 中)的副本(在服务器 b 中)。
如果您的对象实现了“Remote”接口,则它通过引用传递。
如果您的对象没有实现“Remote”接口,它是按值传递.
您必须根据对象的类型做出决定。
在 RMI 中传递对象
远程方法的参数或return值几乎可以是任何类型,包括本地对象、远程对象和原始数据类型。
管理参数和 return 值传递方式的规则如下:
远程对象本质上是通过引用传递的。远程对象引用是一个存根,它是一个客户端代理,实现了远程对象实现的完整远程接口集。
本地对象通过拷贝传递,使用对象序列化。默认情况下,复制所有字段,但标记为静态或瞬态的字段除外。默认序列化行为可以在 class-by-class 的基础上被覆盖。