Поток исполнителя продолжает работать после горячего развертывания

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

Спасибо за любой вклад.


person Braden    schedule 27.09.2011    source источник


Ответы (2)


Да, но это зависит от того, где вы начинаете свой Executor и какую технологию используете:

  • в ServletContextListener: запустите Executor в contextInitialized() и закройте это вниз в contextDestroyed().

  • в сервлете запустите Executor в init(), закройте его с помощью destroy()

  • в bean-компоненте EJB/Spring: запуск в методе, аннотированном @PostConstruct, завершение работы в @PreDestroy.

person Tomasz Nurkiewicz    schedule 27.09.2011

Конечно. Это зависит от того, как вы запустите этот поток. Если, например, вы запускаете его из sevlet, используйте метод сервлета destroy(), чтобы остановить его. Если вы используете Spring, используйте жизненный цикл своего контекста приложения.

person AlexR    schedule 27.09.2011