RMI 远程连接失败

RMI Remote connection fails

我有一个非常简单的 RMI server/client,可以在同一台机器上正常工作。我现在正在尝试在一台机器上执行服务器,在另一台机器上执行客户端,两者都在同一网络上。我已经将 属性 设置为网络 ip 使用:

    System.getProperty("java.rmi.server.hostname", "192.168.x.x");

& 在两台机器上都禁用了防火墙,但连接仍然失败。

客户端代码使用它连接到服务器(服务器在 8888 上使用 createRegistry):

    Registry registry = LocateRegistry.getRegistry("192.168.x.x",8888);
    ITest stub = (ITest) registry.lookup("ITest");

然而,被捕获的异常似乎显示的 IP 与给定的 IP 不同,例如 192.168.x.x vs 169.254.x.x:

Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ...

此异常可能有以下几个原因:

您还没有在后台启动 rmiregistry。
您正在尝试连接到错误的端口号。
您的防火墙可能会阻止连接。

还要确保检查并禁用任何路由器防火墙限制(如果有的话)。

正如 dave_thompson_085 所说,我打电话给 System.getProperty 这是一个我完全错过的错字。调用 System.setProperty 更正了这个问题,现在可以使用了。