[英]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());
當我通過使用關閉RMI服務器程序時,serverReg.unbind(“ LibraryServer”); 它僅刪除遠程對象的[binding]及其鍵'LibraryServer。
正確。
如果我同時啟動服務器,則會給我一個已經在使用的異常ObjID。
我希望看到該異常和堆棧跟蹤。
如何從注冊表中整體刪除遠程對象?
您已經這樣做了。 您可能正在尋找一種取消導出遠程對象的方法,該方法由UnicastRemoteObject.unexportObject()
。
但是,實際上, ObjID already in use
的ObjID already in use
錯誤只能是由於嘗試從已經導出了JVM的JVM中導出另一個注冊表而引起的。 這根本與您的描述不符。
好的,我找到了答案, unbined
方法只會刪除遠程對象及其鍵之間的連接。 因此無法使用相同的遠程對象重新啟動rmi服務器,因為第一個遠程對象仍在注冊表中。 通過使用UnicastRemoteObject
類的unexportObject
方法,可以從注冊表中完全刪除遠程對象。 我從這篇文章中找到了它。
UnicastRemoteObject.unexportObject(serverReg, false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.