我在一个带有两个公共接口的盒子上有一个rmi服务器。当客户端连接时,它总是在UnicastServerRef2 [liveRef: [endpoint:[192.x.x.x:xxxx
中返回错误的IP地址....来自客户端的连接转到另一个带有10.x.x.x
的接口。有人知道如何解决这个问题吗?绑定存根时我不想指定ip。它适用,但我希望它能听所有接口(0.0.0.0
)。
如果我指定java.rmi.server.hostname=myhostname
并使用RMIServerSocketFactory
创建ServerSocket[addr=myhostname/10.x.x.x,localport=xxxx]
,它仍会将192.x.x.x
地址作为远程端点返回给客户端。奇怪的是,我在不同的端口上有两个UnicastRemoteObjects
个对象,其中一个返回正确的地址,另一个没有。
任何想法如何使用连接的接口的ip返回端点?
答案 0 :(得分:3)
这就是java.rmi.server.hostname属性的用途。将它在导出JVM中设置为您希望客户端用于连接它的任何IP地址。