I am using tomcat version 6.0. My requirement is that when tomcat starts up, I would like to start a QuartzScheduler
which will schedule some jobs at a regular interval. I am trying to figure out the best possible way to do it. Here are the options that I could think of -
- I can do this via a servlet with "
load-on-startup
" descriptor inweb.xml
file to start the scheduler and schedule the jobs inside the servlet. - Can be done using a
ContextListener
(this sounds a better approach to me than 1). This might be a clean approach to start the scheduler inside thecontextInitialized
method and shutdown the scheduler insidecontextDestroyed
method. - Using a MBean-descriptor. I develop a MBean which will get started when the server starts up with mbeans-descriptor.xml file.
To me, it looks like second approach is better. Third one might not be a good idea as it is clearly not a MBean to be monitored by jconsole or so. My purpose 开发者_如何学Pythonis to start the scheduler and stop it when tomcat stops. Is there any better and cleaner way to do this ?
I would recommend the second approach as well, using a Servlet that exists only to start up some service, while a common usage, seems hacky to me.
It appears that quartz already provides a ServletContextListener for this exact purpose:
http://quartz-scheduler.org/documentation/quartz-2.x/cookbook/ServletInitScheduler
and
http://www.quartz-scheduler.org/api/2.0.0/
for details.
精彩评论