2012-09-11 52 views
0

我想第一次使用RMI註冊表進行遠程調用。我寫了實現它的接口和類。當我試圖調用它時面臨問題。我在Windows機器上啓動了rmiregistry,它提供了start rmiregistry,它打開了一個新窗口。從客戶端調用RMIregistry的問題

客戶端PRG的樣子:

String host = "172.27.49.199:1099"; 
try { 
    System.out.println(LocateRegistry.getRegistry()); 
    Registry registry = LocateRegistry.getRegistry(host,0); 

    Details stub = (Details) registry.lookup("Hello"); 
    String response = stub.Name(); 
    System.out.println("response: " + response); 
} catch (Exception e) { 
    System.err.println("Client exception: " + e.toString()); 
    e.printStackTrace(); 
} 

我與哪些需要給予host價值混淆的。

我試過給:

(一)http://localhost (B)http://localhost:1099

它留下java.net.UnknownHostException: http://localhost:1099

更新:

改變主機My_Sys_IP後,我失去了java.net.UnknownHostExceptionClient exception: java.rmi.NotBoundException: Details

+0

'NotBoundException'表示您查找的項目不在那裏。我懷疑你正在與錯誤的註冊表交談:請參閱我的答案下面的評論。 – EJP

回答

0

結束了,我不知道爲什麼你困惑。 host是主機名或IP地址。 Javadoc沒有說任何關於使用URL的內容。

它也沒有說你可以通過零作爲一個端口號。你不能。如果你不知道它應該是什麼,請省略該參數。

+0

我很困惑,因爲我給了主機「http:// localhost」,即使如此,我得到了這個異常。更改爲註冊表registry = LocateRegistry.getRegistry(host);甚至現在不工作 –

+0

@AnujBalan(1)它*真的*給''本地主機'UnknownHostException'?難以置信。 (2)'getRegistry(host)'中'host'的值是什麼? (3)您的服務器是否在'localhost'以及客戶端上運行?或者它在另一個主機上運行?在這種情況下,註冊表也是這樣,而不是在本地主機上。 – EJP

+0

(1)我已經做了更新,並沒有面臨unknownhostException。 (2)主機=我的系統IP地址(3)服務器,客戶端的一切都駐留在同一個系統上。 –