1

长话短说 - 我正在尝试在使用 Windows 的不同机器上运行带有客户端和服务器的 RMI 应用程序。

服务器中的简化代码是:

System.setProperty("java.rmi.server.hostname", "192.168.x.x");  
Registry reg = LocateRegistry.createRegistry(1099);  
RemoteFoo foo = new RemoteFoo();        
reg.rebind("Foo", foo);  

在客户端我有:

reg = LocateRegistry.getRegistry("192.168.x.x", 1099);
RemoteFooInterface foo = (RemoteFooInterface) reg.lookup("Foo");

我得到的异常是“连接拒绝托管:192.168.xx;嵌套异常是连接超时:连接”在我查找对象的那一行。

我从有类似问题的人那里读到了一些关于 StackOverflow 的问题,这就是为什么我添加了更改系统属性的行,以便在客户端使用的存根中嵌入正确的 IP,但它仍然不起作用。
如果有人可以为我提供一些关于我还可以尝试什么的指示,我将非常感激。

4

1 回答 1

2

可能是服务器上的防火墙阻止了访问。

确保您可以连接到端口,在您的情况下为 1099。例如,从您的客户端计算机打开命令提示符cmd.exe并键入telnet 192.168.x.x 1099(这将连接到服务器上的端口 1099)。如果它显示“正在连接...”,则该端口不可用,并且客户端计算机很可能无法访问服务器。尝试 ping 192.168.xx(如果服务器的防火墙允许 ICMP,它将起作用)。

尝试修复防火墙以允许通过端口 1099 进行连接,或者更好地禁用它(暂时),然后再试一次。清除后,运行 RMI 客户端

于 2014-12-27T11:43:36.890 回答