2010-06-04 13 views
15

Sto usando Tomcat versione 6.0. Il mio requisito è che all'avvio di tomcat, vorrei iniziare un QuartzScheduler che pianificherà alcuni lavori a intervalli regolari. Sto cercando di capire il modo migliore per farlo. Qui ci sono le opzioni che mi veniva in mente -Integrazione di Tomcat e Quartz Scheduler all'avvio

  1. posso fare questo tramite una servlet con "load-on-startup" descrittore in web.xml file per avviare lo scheduler e programmare i lavori all'interno del servlet.
  2. Può essere fatto utilizzando un ContextListener (questo suona per me un approccio migliore di 1). Questo potrebbe essere un approccio pulito per avviare lo scheduler all'interno del metodo contextInitialized e arrestare lo scheduler all'interno del metodo contextDestroyed.
  3. Utilizzo di un descrittore di MBean. Sviluppo un MBean che verrà avviato all'avvio del server con il file mbeans-descriptor.xml.

Per me, sembra che il secondo approccio sia migliore. Il terzo potrebbe non essere una buona idea in quanto non è chiaramente un MBean essere monitorato da jconsole o così. Il mio scopo è avviare lo scheduler e fermarlo quando Tomcat si ferma. C'è un modo migliore e più pulito per fare questo?

+0

Ecco un esempio di come eseguire questa operazione con spring: http://bxm.at/blogs/java/2007/08/29/quartz_spring –

+0

Il blog collegato a @AshKim è stato spostato: http: // blog. ehrnhoefer.com/2007-08-29-quartz-2-spring/ – Fodder

risposta

14

Suggerirei anche il secondo approccio, utilizzando un servlet che esiste solo per avviare alcuni servizi, mentre un utilizzo comune mi sembra un hacker.

sembra che al quarzo fornisce già un ServletContextListener per questo scopo esatto:

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

e

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

per i dettagli.

+0

Opps non ha mai saputo che Quartz fornisce già un ContextListenner. Grazie mille. – Shamik

Problemi correlati