2013-05-13 2 views
2

Я ввожу Apache Tomcat 7.0.30 в свое приложение. Я использую класс Tomcat, и моему приложению требуется динамическое добавление и удаление коннекторов (HTTP).Порт не освобождается при удалении соединителя во встроенном Tomcat 7

Теперь, удаляя соединители, приложение распадается, но порт остается занятым, и разъем продолжает прослушивать порт. Я использую настраиваемый HTTP-коннектор.

Вот отрывок из моего исходного кода:

для удаления разъема:

 if(connector != null) 
      { 
       connector.decUsage(); 
       if(connector.getUsage() == 0) 
      { 
      connector.stop(); 
      this.tomcat.getService().removeConnector(connector); 
     } 
    } 

для добавления соединителя:

this.tomcat.getService() addConnector (разъем);.

Я знаю, что порт не освобождается. Потому что, когда я снова пытаюсь развернуть этот же порт, он дает мне адрес, который уже используется в качестве исключения. Я много занимался этой проблемой, но безрезультатно. Любая помощь будет принята с благодарностью.

Благодаря

ответ

1

Вы должны вызвать connector.destroy(). Связывание портов по умолчанию выполняется в init, поэтому соответственно уничтожение выполняется в destroy.

Если вы хотите повторно использовать разъем, установите для bindOnInit значение false. Затем порт будет связан/несвязан при запуске/остановке.

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

Разъем останавливается перед удалением, поэтому вам не нужно явно его останавливать при вызове removeConnector.