Интеграция планировщика 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/

для деталей.