2010-04-12 77 views
2

我編寫了一個服務器客戶端rmi應用程序,我正在使用MacOsX和Ubuntu筆記本電腦來測試它們。在ubuntu筆記本電腦上啓動RMI服務器

當我在MacOsX上啓動rmiregistry和服務器時,我可以在netstat中看到端口1099已打開並使用的詳細信息。 然後如果我嘗試使用RMI,使用Ubuntu筆記本電腦的客戶端 - 它工作正常。

但是,當我以其他方式嘗試: 在Ubuntu上啓動rmiregistry和服務器時,我看不到有關1099端口的netstat中的任何細節。 ,並使用從MacOS的客戶端的時候,我無法連接到它,並收到下面的異常:

Received Exception: 
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
java.net.ConnectException: Operation timed out 

後Naming.lookup發生(這樣查找去哪家好發生,但RMI本身不)。

看起來Ubuntu上的rmiregistry正在重定向我的客戶端來連接127.0.1.1,而不是他拒絕的服務器的外部IP。

這可能是什麼原因?

回答

5

找到2個解決方案,不知道哪個是正確的:

  1. 我檢查Ubuntu的機器上的/ etc/hosts文件,看到127.0.1.1被映射到Ubuntu的筆記本電腦的名字,所以我已將其重寫爲我的正確外部IP。

之後,它的工作。然而,我認爲這不是一個好主意,有一個靜態IP地址(因爲如果它會動態變化?)

  1. 因此,此問題的解決方法是指定使用rmi.server.hostname屬性啓動服務器時的主機名。因此,這將是類似的東西:

java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35

之後 - 它的作品。

+0

我對你的java-arguments有點困惑,對我有用,可能你的意思是將'-Djava.rmi.server.hostname = yourLocalIP'添加到vm參數中。 – luk2302 2015-09-28 14:17:46

相關問題