簡體   English   中英

如何從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());

當我通過使用關閉RMI服務器程序時,serverReg.unbind(“ LibraryServer”); 它僅刪除遠程對象的[binding]及其鍵'LibraryServer。

正確。

如果我同時啟動服務器,則會給我一個已經在使用的異常ObjID。

我希望看到該異常和堆棧跟蹤。

如何從注冊表中整體刪除遠程對象?

您已經這樣做了。 您可能正在尋找一種取消導出遠程對象的方法,該方法由UnicastRemoteObject.unexportObject()

但是,實際上, ObjID already in useObjID already in use錯誤只能是由於嘗試從已經導出了JVM的JVM中導出另一個注冊表而引起的。 這根本與您的描述不符。

好的,我找到了答案, unbined方法只會刪除遠程對象及其鍵之間的連接。 因此無法使用相同的遠程對象重新啟動rmi服務器,因為第一個遠程對象仍在注冊表中。 通過使用UnicastRemoteObject類的unexportObject方法,可以從注冊表中完全刪除遠程對象。 我從這篇文章中找到了它。

UnicastRemoteObject.unexportObject(serverReg, false);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM