Должны ли потоки иметь особый дизайн, который должен быть корректно завершен Tomcat? - PullRequest
13 голосов
/ 30 декабря 2011

Я разработал многопоточное веб-приложение, которое работает на Tomcat. Но я не могу использовать

shutdown.bat

Tomcat не остановился грациозно. В отладчике я видел, что потоки продолжают работать после команды выключения. Нужно ли исправлять код приложения, чтобы он соответствовал особым требованиям? Спасибо.

Ответы [ 3 ]

12 голосов
/ 30 декабря 2011

... и связать другие ответы с работой сред сервлетов Java;

Если вы не объявляете свои потоки как потоки демонов, способ сообщить серверу об отключении потоков заключается в реализации ServletContextListener и настройке его для вашего веб-приложения (web.xml). Когда Tomcat завершает работу, он сначала закрывает каждое приложение, что, в свою очередь, вызывает contextDestroyed() метод прослушивателя, который вызывается - и здесь вы можете сообщить своим собственным потокам, что они должны завершить свою работу.

6 голосов
/ 30 декабря 2011

Любые потоки, которые все еще работают, будут поддерживать процесс Java (Tomcat) живым.Убедитесь, что все ваши темы выходят.Как только ваши потоки завершатся, Tomcat сможет завершить работу.

См. Javadoc для Thread .Обратите внимание на следующее:

Виртуальная машина Java продолжает выполнять потоки, пока не произойдет одно из следующих действий:

  • Был вызван метод выхода класса Runtime и менеджер безопасностиразрешил выполнение операции выхода.
  • Все потоки, которые не являются потоками демона, умерли, либо путем возврата из вызова метода run, либо путем выброса исключения, которое распространяется за пределы метода run.
5 голосов
/ 30 декабря 2011

Вам нужно отменить ваши потоки, желательно, позвонив по ним interrupt и убедившись, что они написаны таким образом, что они реагируют на прерывание - то есть проверяют свой флаг прерывания и разумно реагируют на InterruptedExceptions (не толькоесть их и продолжать).

Приведенный выше совет предполагает, что вы не хотите, чтобы ваши темы немедленно отбрасывали то, что они делают.Если ты в порядке с этим, сделай из них демонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...