我正在我的应用程序中嵌入 Apache Tomcat 7.0.30。我正在使用 Tomcat 类,并且我的应用程序需要动态添加和删除连接器(HTTP)。
现在,在删除连接器时,应用程序被取消部署,但端口仍然被占用,并且连接器继续监听该端口。我正在使用自定义的 HTTP 连接器。
这是我的源代码的片段:
用于移除连接器:
if( connector != null )
{
connector.decUsage();
if( connector.getUsage() == 0 )
{
connector.stop();
this.tomcat.getService().removeConnector( connector );
}
}
用于添加连接器:
this.tomcat.getService().addConnector(连接器);
我知道该端口没有释放。因为当我尝试再次部署到同一端口时,它给了我一个地址已在使用的异常。 我为这个问题上网冲浪了很多次,但没有结果。任何帮助将不胜感激。
谢谢
最佳答案
您需要调用connector.destroy()。 默认情况下,端口绑定(bind)是在init中完成的,因此相应地,解除绑定(bind)是在destroy中完成的。
如果您想重新使用连接器,请将bindOnInit 设置为false。然后端口将在启动/停止时绑定(bind)/解除绑定(bind)。
connector.setProperty("bindOnInit", "false")
连接器在删除之前会停止,因此在调用removeConnector时无需显式停止它。
关于tomcat7 - 移除嵌入式 Tomcat 7 中的连接器时端口无法释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16526027/