我在weblogic上运行了一个webapp,它在ServletContextListener上运行一个Scheduler。
问题是调度程序无限期地运行,所以即使我停止webapp或重新部署调度程序仍在运行。
我应该可以在contextDestroyed上停止调度程序,但是我没有实例。我已经看到几个网站推荐这个问题的方法,但是他们都有定期运行一定数量的sheduler。
答案 0 :(得分:1)
Quartz附带一个专门用于启动和发布的servlet。在应用程序启动和关闭时停止调度程序只需将以下内容添加到web.xml:
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
申请关闭后,您必须致电
scheduler.shutdown();
有时你必须做一个Thread.sleep(1000);让它正常关闭。
在ContextLoad侦听器或您拥有的其他关闭挂钩中执行此操作。
获取实例取决于你如何设置quartz,但默认调度程序可以像这样获得:
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
有关详细信息,请参阅http://www.quartz-scheduler.org/docs/1.x/quick_start_guide.html