我設法創建了一個RMI應用程序,它可以完成我所需要的操作,但是我的問題讓我頭腦不清,客戶端在哪裏獲取遠程對象的定義。例如:RMI問題 - 客戶端從哪裏獲得尚未添加到註冊表的遠程類的定義?
我有一個服務器註冊自己的rmiregistry(允許客戶端調用它的方法)。
UnicastRemoteObject.exportObject(new Server(), 0);
運行reg.list()
確認我的服務器確實已被添加到註冊表中。我有另一個遠程對象(rObj)在與服務器相同的JVM上運行。這不會被添加到註冊表中。在此之後
reg.lookup("Server")
可以自由創建rObj的實例:
在我的客戶,我可以通過在rmiregistry中查找Server
得到我的服務器類的定義。我的問題的癥結在於,我的客戶端從哪裏獲得rObj的定義,即使它從未添加到註冊表中。
我知道它必須來自服務器,因爲它是存儲類和接口的地方。與Server
的連接是否會自動打開其他遠程類接收的管道?
如果是這樣,客戶端如何知道在服務器上查找遠程類。服務器幾乎是作爲客戶端類路徑的擴展(它將訴諸檢查服務器中不在其自己的類路徑中的類)?
是rObj使用Server實例裏面:
這是完全詳細解釋:然後用系統屬性表示URL到這個jar文件啓動客戶端?它是否從服務器的任何方法返回? – 2011-01-24 20:22:00
它是一個服務器方法的參數,但它沒有被任何服務器方法返回 – richzilla 2011-01-24 20:26:11