Интеграция планировщика tomcat и Quartz при запуске
Я использую tomcat версии 6.0. Мое требование состоит в том, что когда tomcat запускается, я хотел бы запустить QuartzScheduler
, который будет планировать некоторые задания с регулярным интервалом. Я пытаюсь найти наилучший способ сделать это. Вот варианты, о которых я мог думать -
- Я могу сделать это с помощью сервлета с дескриптором "
load-on-startup
" в файле web.xml
, чтобы запустить планировщик и запланировать задания внутри сервлета.
- Может быть сделано с помощью
ContextListener
(это лучший подход ко мне, чем 1). Это может быть чистым подходом к запуску планировщика внутри метода contextInitialized
и выключения планировщика внутри метода contextDestroyed
.
- Использование дескриптора MBean. Я разрабатываю MBean, который начнется, когда сервер запустится с файлом mbeans-descriptor.xml.
Мне кажется, что второй подход лучше. В-третьих, это может быть не очень хорошая идея, так как это явно не мониторинг MBean с помощью jconsole или так. Моя цель - запустить планировщик и остановить его, когда tomcat остановится.
Есть ли лучший и более чистый способ сделать это?
Ответы
Ответ 1
Я бы порекомендовал и второй подход, используя сервлет, который существует только для запуска какой-то службы, а для обычного использования кажется мне взломанным.
Похоже, что кварц уже предоставляет ServletContextListener для этой цели:
http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/ServletInitScheduler
и
http://www.quartz-scheduler.org/api/2.0.0/
для деталей.