如何从 RMI 运行时中删除远程对象
How can i remove the remote object from the RMI runtime
当我使用关闭 RMI 服务器程序时,
serverReg.unbind("LibraryServer");
它只删除远程对象的绑定和它的键'LibraryServer
。如果我同时启动服务器,它会给我一个例外 ObjID already in use
。我怎样才能从注册表中完全删除远程对象?。
远程对象的绑定语句及其关键是,
serverReg.rebind("LibraryServer", new RemoteFactoryImpl());
好的,我找到了答案,unbined
方法只删除远程对象与其密钥之间的连接。因此无法使用相同的远程对象重新启动 rmi 服务器,因为第一个远程对象仍在注册表中。通过使用UnicastRemoteObject
class 的unexportObject
方法可以完全从注册表中删除远程对象。我从 this 的 post 中找到了它。
UnicastRemoteObject.unexportObject(serverReg, false);
When I shutdown the RMI server program by using, serverReg.unbind("LibraryServer"); it only remove the [binding] of remote object and it's key 'LibraryServer.
正确。
If i start the server same time it give me an exception ObjID already in use.
我想查看该异常和堆栈跟踪。
How can I entirety remove remote object from the registry?
您已经这样做了。您可能正在寻找 unexport 远程对象的方法,该对象由 UnicastRemoteObject.unexportObject()
.
给出
然而,ObjID already in use
错误实际上只能来自尝试从您已经导出一个的 JVM 导出另一个 Registry。这与您的描述完全不符。
当我使用关闭 RMI 服务器程序时,
serverReg.unbind("LibraryServer");
它只删除远程对象的绑定和它的键'LibraryServer
。如果我同时启动服务器,它会给我一个例外 ObjID already in use
。我怎样才能从注册表中完全删除远程对象?。
远程对象的绑定语句及其关键是,
serverReg.rebind("LibraryServer", new RemoteFactoryImpl());
好的,我找到了答案,unbined
方法只删除远程对象与其密钥之间的连接。因此无法使用相同的远程对象重新启动 rmi 服务器,因为第一个远程对象仍在注册表中。通过使用UnicastRemoteObject
class 的unexportObject
方法可以完全从注册表中删除远程对象。我从 this 的 post 中找到了它。
UnicastRemoteObject.unexportObject(serverReg, false);
When I shutdown the RMI server program by using, serverReg.unbind("LibraryServer"); it only remove the [binding] of remote object and it's key 'LibraryServer.
正确。
If i start the server same time it give me an exception ObjID already in use.
我想查看该异常和堆栈跟踪。
How can I entirety remove remote object from the registry?
您已经这样做了。您可能正在寻找 unexport 远程对象的方法,该对象由 UnicastRemoteObject.unexportObject()
.
然而,ObjID already in use
错误实际上只能来自尝试从您已经导出一个的 JVM 导出另一个 Registry。这与您的描述完全不符。