2

我在我的应用程序中嵌入了 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( 连接器 );

我知道港口并没有得到自由。因为当我再次尝试部署到同一个端口时,它给了我一个地址已经在使用中的异常。我已经为这个问题冲浪了很多,但无济于事。任何帮助将不胜感激。

谢谢

4

1 回答 1

2

你需要调用connector.destroy()。端口绑定默认是在 init 中完成的,所以相应的 unbinding 也是在destroy中完成的。

如果要重新使用连接器,请将 bindOnInit 设置为 false。然后端口将在启动/停止时绑定/取消绑定。

connector.setProperty("bindOnInit", "false")

连接器在移除之前会停止,因此在调用 removeConnector 时无需显式停止它。

于 2013-07-30T10:57:33.963 回答