我想通過編程方式(不使用jvm設置)在端口和網絡接口上創建rmi服務器。例如,我想要rmi服務器監聽接口127.0.0.1和端口2525.我已經閱讀了互聯網上的信息,這是我終於來到的解決方案。RMI:在某個網絡地址和端口上創建服務器
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也有端口參數。我的錯誤是什麼?
P.S.這不是Remote method invocation port in use的重複,因爲它是關於選擇網絡接口而不是端口。
@ close-voter不是這個問題的重複.. – EJP