【发布时间】:2010-06-28 05:50:49
【问题描述】:
我有一个在特定端口上接受 SSL 连接的应用程序。当我从 Websphere 管理控制台停止应用程序然后重新启动它时,我收到一个异常,抱怨该端口仍在使用中。我需要完全关闭并重新启动 Websphere 才能让应用程序再次运行。
在 Java 中停止监听端口的正确方法是什么?
【问题讨论】:
我有一个在特定端口上接受 SSL 连接的应用程序。当我从 Websphere 管理控制台停止应用程序然后重新启动它时,我收到一个异常,抱怨该端口仍在使用中。我需要完全关闭并重新启动 Websphere 才能让应用程序再次运行。
在 Java 中停止监听端口的正确方法是什么?
【问题讨论】:
创建一个上下文监听器并在 web.xml 中注册它。然后您可以在contextDestroyed() 调用中关闭所有打开的套接字。
详情请看这里
【讨论】:
我不确定它是如何在 Java 中完成的,但是关闭套接字(ServerSocket 上的 .close()?)将关闭端口。尽管如此,许多操作系统仍不允许您在关闭同一个端口大约 30 秒后重用它,以防止新连接读取旧消息。
【讨论】:
只需关闭套接字句柄,例如yourSocket.close()。 This example 可能会有所帮助。
【讨论】:
ServerSocket ss = new ServerSocket();
ss.setReuseAddress(true);
ss.bind(port);
【讨论】: