在webapp上的Quartz - 调度程序不会停止

时间:2011-06-22 19:30:45

标签: java java-ee weblogic quartz-scheduler

我在weblogic上运行了一个webapp,它在ServletContextListener上运行一个Scheduler。

问题是调度程序无限期地运行,所以即使我停止webapp或重新部署调度程序仍在运行。

我应该可以在contextDestroyed上停止调度程序,但是我没有实例。我已经看到几个网站推荐这个问题的方法,但是他们都有定期运行一定数量的sheduler。

4 个答案:

答案 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)

如果要关闭而不等待正在执行的作业完成使用:

scheduler.shutdown(false);

查看this page了解详情。

答案 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