0

我在一个带有两个公共接口的盒子上有一个 rmi 服务器。当客户端连接时,它总是在UnicastServerRef2 [liveRef: [endpoint:[192.x.x.x:xxxx...中返回错误的 ip 地址。来自客户端的连接使用 ip 转到另一个接口10.x.x.x。有谁知道如何解决这个问题?我不想在绑定存根时指定 ip。然后它可以工作,但我希望它能够监听所有接口(0.0.0.0)。

如果我指定java.rmi.server.hostname=myhostname并使用 aRMIServerSocketFactory创建 a ServerSocket[addr=myhostname/10.x.x.x,localport=xxxx],它仍会将192.x.x.x地址作为远程端点返回给客户端。奇怪的是,我UnicastRemoteObjects在不同的端口上有两个对象,其中一个返回正确的地址,另一个没有。

任何想法如何使其返回带有连接的接口的ip的端点?

4

1 回答 1

3

这就是 java.rmi.server.hostname 属性的用途。在导出 JVM 处将其设置为您希望客户端用来连接到它的任何 IP 地址。

于 2013-08-24T10:27:02.320 回答