如何停止RMI客户端?

时间:2013-01-25 04:33:42

标签: java rmi

我正在开发一个正在进行改造/现代化的项目,其中有一个小的RMI部分,不幸的是我以前从未使用过RMI。

我无法弄清楚的一点是,在我最初创建RMI客户端之后,它一直在调用其自定义SocketFactory构造函数。似乎每隔5分钟就会看到输出,即使客户端和服务器之间没有流量,也会调用构造函数。

所以我想必须有某种方法来结束客户端或以某种方式清理它,所以它停止这样做但我不知道它可能是什么。

它设置RMI连接如下:

UnicastRemoteObject.exportObject(this);
TheServer rmiServer = (TheServer)Naming.lookup(s); // where s is some rmi:// url

然后,我可以访问服务器的方法,它可以调用我的客户端上的方法。

完成连接后,我应该怎么做才能清理并停止任何线程以保持连接?

我正在检查UnicastRemoteObject,也许我需要使用方法unexportObject?

但是这个自定义SocketFactory如何被调用,在我的项目中绝对没有引用它的类名,除非它在后台通过从客户端的名称派生类名来找到它...

1 个答案:

答案 0 :(得分:0)

您正在看到分布式垃圾收集的效果。如果您已完成存根,只需释放所有本地引用并将其置于本地垃圾收集。然后DGC也将停止,并且该远程对象的所有网络活动都将停止。