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

标签 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,但他拒绝这样做。

这可能是什么原因造成的?

最佳答案

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

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

之后就成功了。但是,我认为拥有静态 IP 地址并不是一个好主意(因为如果它会动态更改怎么办?)

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

    之后 - 就可以了。

    关于ubuntu - 在 ubuntu 笔记本电脑上启动 RMI 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2624752/

    相关文章:

    linux - ubuntu 权限被拒绝

    Ruby 2.0 无法在 OS X 上提取源代码

    java RMI - 意外错误

    java - 是否可以通过 RMI 或其他网络技术远程调用 Swing Listener 的方法?

    java - 在 weblogic 中的 ejb 3 处使用远程接口(interface)进行 RMI 调用

    python - python脚本中的wkhtmltopdf不适用于cronjob

    node.js - 如何在 443 端口上配置多个进程? Apache - ubuntu

    python - 将我的 IP 地址连接到 flask 服务器时出错 - ubuntu ipython

    iphone - 我应该验证 Foundation API 容器内的对象吗?

    c++ - main : linking fortran with C++的多重定义