我正在使用Java RMI。问题是,通过关闭线程或调用System.exit(0)
,我需要在RMI注册表中注册的对象执行unbind()
以删除与该对象的所有关联。当我们执行System.exit(0)
时,该对象已经在RMI注册表中注册。
如何通过调用System.exit(0)
unbind()
特别是由对象组成?我曾考虑过System.exit()
覆盖,但显然不是解决方案。
答案 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就会自动退出。