tomcat7 - 移除嵌入式 Tomcat 7 中的连接器时端口无法释放

标签 tomcat7 connector embedded-tomcat-7

我正在我的应用程序中嵌入 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/

相关文章:

java - 无法在 linux 上使用 tomcat 实现 waffle 身份验证。 javax.security.auth.login.LoginException :

c# - Mysql 连接器 - MultipleActiveResultSets 问题

java - 嵌入式Tomcat + Spring文件上传: HTTP 404

java - "[http-bio-8080-exec-494] [ERROR]"中 exec 之后的数字是什么意思?

java - tomcat 未在 eclipse 中启动,Logger ClassnotFoundException,无效的 LOC header

c++ - 'int8_t' : redefinition error in config. h 尝试将 mysql cpp 连接器连接到 visual studio 2010

java - Mongo Hadoop 连接器问题

java - 限制嵌入式 Tomcat 中的密码

java - 如何检查应用程序是否在嵌入式 Tomcat 7 上运行?

java - 将war文件上传到tomcat时出现IllegalArgumentException