我写了一个服务器客户端rmi应用程序,我正在使用MacOsX和Ubuntu笔记本电脑来测试它们。
当我在MacOsX上启动rmiregistry和服务器时,我可以在netstat中看到端口1099打开并使用的详细信息。 然后如果我尝试使用RMI,使用Ubuntu笔记本电脑的客户端 - 它工作正常。
然而,当我以相反的方式尝试时: 在Ubuntu上启动rmiregistry和服务器,我在netstat中看不到有关1099端口的任何细节。 而且,当使用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。
原因可能是什么?
答案 0 :(得分:5)
找到2个解决方案,不知道哪个是对的:
之后它起作用了。但是,我认为拥有一个静态IP地址并不是一个好主意(因为它会动态变化吗?)
java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35
之后 - 它有效。