exportObject和createRegistry相同(port + ip)

时间:2014-07-07 06:01:00

标签: java rmi

 RMI exportObject(Remote obj, PORT); 
 createRegistry(PORT);

他们可以共享一个相同的端口,它可以正常工作。但每当我尝试通过扩展RMISocketFactory为其中任何人指定ip addr时,它将报告"port already in use"

createRegistry(PORT,ssf,csf);

如果他们可以在localhost上共享相同的端口,为什么特定的ip不起作用?

1 个答案:

答案 0 :(得分:0)

它不起作用,因为如果它们使用相同的RMIServerSocketFactory它们只能共享相同的端口,我的意思是当使用其他实例调用时,该套接字工厂的equals()方法返回true,或者本身,如果您只使用一个实例。

所以:

  1. 不要延长RMISocketFactory,它已经过时了。创建自己的实现RMIServerSocketFactory的类,并确保其equals()方法与自身匹配。

  2. 在exportObject()和createRegistry()中使用该服务器套接字工厂。

  3. 但我会质疑你为什么要绑定到特定的IP地址。通常这是一个错误,通常是另一个问题的错误解决方案,例如java.rmi.server.hostname问题。