RMI exportObject(Remote obj, PORT);
createRegistry(PORT);
他们可以共享一个相同的端口,它可以正常工作。但每当我尝试通过扩展RMISocketFactory为其中任何人指定ip addr时,它将报告"port already in use"
。
createRegistry(PORT,ssf,csf);
如果他们可以在localhost上共享相同的端口,为什么特定的ip不起作用?
答案 0 :(得分:0)
它不起作用,因为如果它们使用相同的RMIServerSocketFactory它们只能共享相同的端口,我的意思是当使用其他实例调用时,该套接字工厂的equals()方法返回true,或者本身,如果您只使用一个实例。
所以:
不要延长RMISocketFactory,它已经过时了。创建自己的实现RMIServerSocketFactory的类,并确保其equals()方法与自身匹配。
在exportObject()和createRegistry()中使用该服务器套接字工厂。
但我会质疑你为什么要绑定到特定的IP地址。通常这是一个错误,通常是另一个问题的错误解决方案,例如java.rmi.server.hostname问题。