当我使用来自客户端的远程引用时,一切正常。如果我尝试使用simu中的此远程引用,则通信失败,因为服务器尝试使用eth0中的IP。困扰我的是在模拟器上报告异常。 我想我错过了什么?
[编辑] simu提供了这个例外:
java.rmi.ConnectIOException:创建与
的连接的异常eth0_IP
;嵌套异常是:java.net.SocketException:网络无法访问
答案 0 :(得分:1)
您需要设置the java.rmi.server.hostname
property以告知RMI注册管理机构在其RMI网址中返回哪个主机名或IP地址。
这默认为系统上第一个界面的IP地址,这解释了为什么它只能通过eth0
。
所以你需要这样的东西:
String ipAddress = "10.1.2.3"; //IP address of eth1
System.setProperty("java.rmi.server.hostname",ipAddress);
或
String hostname = "myserver"; //hostname that resolves for client and simu
System.setProperty("java.rmi.server.hostname",hostname);