如何确定RMI传输层应该使用哪个物理接口?

时间:2012-02-21 10:02:36

标签: java rmi

当我使用来自客户端的远程引用时,一切正常。如果我尝试使用simu中的此远程引用,则通信失败,因为服务器尝试使用eth0中的IP。困扰我的是在模拟器上报告异常。 我想我错过了什么?

[编辑] simu提供了这个例外:

  

java.rmi.ConnectIOException:创建与eth0_IP;

的连接的异常      

嵌套异常是:java.net.SocketException:网络无法访问

Network Configuration

1 个答案:

答案 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);