在 System.exit(0) 解绑

Unbind at System.exit(0)

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

如何通过调用 System.exit(0) 来做到这一点 unbind() 是由对象组成的?我曾考虑过 System.exit() override ,但显然这不是解决方案。

The problem is that, by closing a thread, or call System.exit(0), I need the object registered with the RMI registry to execute an unbind() to remove all associations with the object.

那就这样吧。但是没有'closing a thread'这样的东西,甚至退出一个线程也不需要你解绑任何东西。

When we perform System.exit(0), the object is already registered with the RMI registry.

很好,所以 unbind() 会成功。不确定她在说什么。您是说“仍然 已注册”吗?

How I can do so by calling System.exit(0) the unbind() is made of the object in particular?

你不能。您必须在 System.exit() 调用之前调用 unbind()

I had thought about making a System.exit() override , but apparently that's not the solution.

您不能覆盖静态方法,System 是最终方法。

看起来你可能 System.exit() 溅了一地,这已经是糟糕的做法了。

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