在System.exit(0)解除绑定

时间:2015-10-27 20:14:51

标签: rmi unbind system.exit

我正在使用Java RMI。问题是,通过关闭线程或调用System.exit(0),我需要在RMI注册表中注册的对象执行unbind()以删除与该对象的所有关联。当我们执行System.exit(0)时,该对象已经在RMI注册表中注册。

如何通过调用System.exit(0) unbind()特别是由对象组成?我曾考虑过System.exit()覆盖,但显然不是解决方案。

1 个答案:

答案 0 :(得分:1)

  

问题在于,通过关闭线程或调用System.exit(0),我需要在RMI注册表中注册的对象执行unbind()以删除与该对象的所有关联。

那样做。但是没有关闭线程的事情,甚至退出一个线程并不需要你解开任何东西。

  

当我们执行System.exit(0)时,该对象已经在RMI注册表中注册。

好,所以unbind()会成功。不知道是什么让她变成了她。您的意思是' 已注册'?

  

如何通过调用System.exit(0) unbind()特别是由对象构成?

你不能。您必须在System.exit()来电之前通过unbind()来电。

  

我曾考虑过System.exit()覆盖,但显然不是解决方案。

您无法覆盖静态方法,System是最终的。

看来你可能System.exit()遍布整个地方,这已经很糟糕了。

简单的答案不是简单地调用System.exit(),而是取消绑定和取消导出对象而不是。然后RMI线程将退出,只要您没有自己的任何非守护程序线程,您的JVM就会自动退出。