【发布时间】:2016-07-26 09:09:25
【问题描述】:
我想在我以编程方式选择的端口和网络接口上创建 rmi 服务器(没有 jvm 设置)。例如我想要rmi服务器监听接口127.0.0.1和端口2525。我在互联网上阅读了资料,这就是我最终得到的解决方案。
class ServerSocketFactory implements RMIServerSocketFactory, Serializable {
public ServerSocket createServerSocket(int port) throws IOException
{
ServerSocket server = new ServerSocket(2525, 0, InetAddress.getByName("127.0.0.1"));
return server;
}
}
这就是我创建注册表的方式
registry = LocateRegistry.createRegistry(2525,null,new ServerSocketFactory());
但是,我得到了异常:
java.rmi.server.ExportException: Port already in use: 2525; nested exception is:
java.net.BindException: Address already in use
at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:341)
我不明白为什么如果我在 createRegistry 中使用 ServerSocketFactory 还有一个端口参数。我的错误是什么?
附:这不是Remote method invocation port in use 的重复,因为它是关于选择网络接口而不是端口。
【问题讨论】:
-
@close-voter 不是那个问题的重复..