在ubuntu笔记本电脑上启动RMI服务器

时间:2010-04-12 19:23:11

标签: ubuntu macos rmi

我写了一个服务器客户端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。

原因可能是什么?

1 个答案:

答案 0 :(得分:5)

找到2个解决方案,不知道哪个是对的:

  1. 我检查了Ubuntu机器上的/ etc / hosts,看到127.0.1.1被映射到ubuntu-laptop名称,所以我把它重写为正确的外部IP。
  2. 之后它起作用了。但是,我认为拥有一个静态IP地址并不是一个好主意(因为它会动态变化吗?)

    1. 因此,此问题的解决方法是使用rmi.server.hostname属性启动服务器时指定主机名。所以它会是这样的:
    2. java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35

      之后 - 它有效。