在我在Tomcat 7.x下运行的应用程序中,servlet启动一个新的Thread。在这个线程中,我创建了一个套接字(在端口8081上),它等待客户端连接(serverSocket.accept()
)。
取消部署应用时,线程不会被杀死。这就是为什么当我重新部署应用程序时,我的新套接字无法侦听端口8081,因为前一个套接字仍在监听它。我还在控制台日志中获得了“内存泄漏”。
我在我的帖子上尝试了setDaemon(true)
,但它没有解决问题。我该怎么办?
非常感谢。
答案 0 :(得分:1)
在destroy()方法中关闭套接字。在accept()中被阻塞的线程将抛出一个IOException:让它从那里退出。