【问题标题】:Starting RMI server on ubuntu laptop在 ubuntu 笔记本电脑上启动 RMI 服务器
【发布时间】:2010-04-12 19:23:11
【问题描述】:

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

这可能是什么原因?

【问题讨论】:

    标签: ubuntu macos rmi


    【解决方案1】:

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

    1. 我检查了 Ubuntu 机器上的 /etc/hosts,发现 127.0.1.1 已映射到 ubuntu-laptop 名称,因此我已将其重写为正确的外部 IP。

    之后它起作用了。但是,我认为拥有一个静态 IP 地址并不是一个好主意(因为如果它会动态变化呢?)

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

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

    在那之后 - 它起作用了。

    【讨论】:

    • 我对你的 java 参数感到有点困惑,什么对我有用,可能你的意思是将 -Djava.rmi.server.hostname=yourLocalIP 添加到 vm 参数中。
    猜你喜欢
    • 2012-12-13
    • 1970-01-01
    • 2013-09-12
    • 2020-01-26
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多