我有一个应用程序,在特定端口上接受SSL连接。当我从Websphere管理控制台停止应用程序,然后再次启动它时,会出现一个异常,指示该端口仍在使用中。我需要完全关闭并重新启动Websphere才能使应用程序再次正常工作。
在Java中停止监听端口的正确方法是什么?
我不确定在Java中如何做到这一点,但关闭套接字(.close()对于ServerSocket?)将关闭端口。尽管如此,许多操作系统在您关闭端口后大约30秒内不会让您重用相同的端口,以防止新连接读取旧消息。
contextDestroyed()
调用中关闭所有打开的套接字。只需关闭套接字句柄,类似 yourSocket.close()
。这个例子可能会有帮助。
ServerSocket ss = new ServerSocket();
ss.setReuseAddress(true);
ss.bind(port);