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