我写了一个服务器 - 客户端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
Run Code Online (Sandbox Code Playgroud)
在Naming.lookup发生之后会发生这种情况(所以查找很顺利,但RMI本身并没有).
似乎Ubuntu上的rmiregistry正在重定向我的客户端以连接127.0.1.1,而不是服务器的外部IP,他拒绝这样做.
可能是什么原因?
找到2个解决方案,不知道哪个是对的:
之后它起作用了.但是,我认为拥有静态IP地址并不是一个好主意(因为它会动态变化吗?)
java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35
在那之后 - 它的工作原理.