Интеграция tomcat и Quartz планировщика при запуске - PullRequest
16 голосов
/ 04 июня 2010

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

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

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

1 Ответ

15 голосов
/ 04 июня 2010

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

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

http://quartz -scheduler.org / документация / кварц-2.x / кулинарной / ServletInitScheduler

и

http://www.quartz -scheduler.org / апи / 2.0.0 /

для деталей.

...