在 System.exit(0) 处解除绑定

Posted

技术标签:

【中文标题】在 System.exit(0) 处解除绑定【英文标题】:Unbind at System.exit(0) 【发布时间】:2016-01-27 10:25:57 【问题描述】:

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

我如何通过调用System.exit(0) 来做到这一点,unbind() 是由特定的对象组成的?我曾想过制作一个 System.exit() 覆盖,但显然这不是解决方案。

【问题讨论】:

【参考方案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 将自行退出,只要您没有任何自己的非守护线程。

【讨论】:

以上是关于在 System.exit(0) 处解除绑定的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序被绑定了怎么解除?

Netty 关闭/解除绑定服务器通道

关于jquery的on,你怎么绑定就怎么解除

大漠插件解除窗口绑定命令

关于Uber优步无法解除默认绑定支付方式和百度钱包无法解除银行卡/信用卡绑定的问题

在淘汰赛中解除视图模型与视图的绑定