Java 如何通过RMI移动对象?

Java 如何通过RMI移动对象?,java,rmi,Java,Rmi,在不同的RMI实例之间移动对象是否有一种简单、优雅和聪明的方法 目前,我将通过在接收RMI服务器中克隆对象,然后在发送RMI客户端中销毁原始对象(或者在从RMI服务器A移动到RMI服务器B时以其他方式)来执行此任务 我想,我还必须克隆并销毁该对象的所有对象?没有必要克隆接收到的对象 创建对它的引用就足够了 接收到的对象已经是rmi调用中使用的原始对象的副本(在服务器b中)(在服务器a中)。如果您的对象实现了“远程”接口,则它是通过引用传递的 如果对象未实现“远程”接口,则它是通过值传递的 您必须

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

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


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

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

创建对它的引用就足够了

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

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

如果对象未实现“远程”接口,则它是通过值传递的

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

RMI中的传递对象

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

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

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


本地对象使用对象序列化通过副本传递。默认情况下,将复制所有字段,但标记为静态或瞬态的字段除外。默认序列化行为可以逐类重写。

不同的RMI实例是什么意思?运行在相同或不同机器上的RMI服务器或客户端。您能提供更多上下文吗?克隆后,为什么需要“销毁”原始对象?RMI是“远程方法调用”,这意味着您有一个代理,它调用另一台服务器上对象的方法。如果你破坏了它-没有什么可调用的。我想将对象从机器A移动到B,以释放A上的内存或关闭它。我有这样的体系结构:一种“代理”(一个或多个)将数据分发到运行在其他机器上的RMI服务器,这些服务器存储对象并对对象执行计算。但我想将对象从A移动到B(即释放机器上的存储或关闭),因此我想我必须克隆它,由于原始对象被解构,或者整个远程实例将消失。@user2661619 Non-sequitur。只需将对象作为参数传递,然后忘记它。