Интеграция Tomcat и Quartz scheduler при запуске


Я использую tomcat версии 6.0. Мое требование заключается в том, что при запуске tomcat я хотел бы запустить QuartzScheduler, который будет планировать некоторые задания с регулярным интервалом. Я пытаюсь найти наилучший способ сделать это. Вот варианты, которые я мог бы придумать -

  1. я могу сделать это через сервлет с дескриптором "load-on-startup" в файле web.xml, чтобы запустить планировщик и запланировать задания внутри сервлета.
  2. может быть сделано с помощью ContextListener (это звучит лучше подход ко мне чем 1). Это может быть чистым подходом для запуска планировщика внутри метода contextInitialized и завершения работы планировщика внутри метода contextDestroyed.
  3. с использованием MBean-дескриптора. Я разрабатываю MBean, который будет запускаться, когда сервер запускается с mbeans-дескриптором.XML-файл.

Мне кажется, что второй подход лучше. В-третьих, это может быть не очень хорошая идея, поскольку это явно не MBean, который будет контролироваться jconsole или так. Моя цель-запустить планировщик и остановить его, когда кот останавливается. Есть ли лучший и более чистый способ сделать это ?

1 15

1 ответ:

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

Похоже, что quartz уже предоставляет ServletContextListener именно для этой цели:

Http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/ServletInitScheduler

И

Http://www.quartz-scheduler.org/api/2.0.0/

Подробнее.