在两台机器上运行Java RMI应用程序 - ConnectException

时间:2014-12-27 10:47:53

标签: java rmi connectexception

长话短说 - 我试图在使用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");

我得到的例外是" Connection拒绝主持人:192.168.x.x;嵌套异常是连接超时:connect"在我查找对象的行。

我从有类似问题的人那里读了一些关于StackOverflow的问题,这就是为什么我添加了更改System属性的行,以便在客户端使用的存根中嵌入正确的IP,但它仍然不起作用。<登记/> 如果有人能给我提供一些我可以尝试的其他建议,我将非常感激。

1 个答案:

答案 0 :(得分:2)

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

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

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