【问题标题】:Quartz on a webapp - scheduler does not stopWebapp 上的 Quartz - 调度程序不会停止
【发布时间】:2011-06-22 19:30:44
【问题描述】:

我有一个在 weblogic 上运行的 webapp,它在 ServletContextListener 上运行调度程序。

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

我应该能够在 contextDestroyed 上停止调度程序,但我没有实例。我见过几个网站推荐这种方法来解决这个问题,但它们都有运行特定次数的调度程序。

【问题讨论】:

    标签: java jakarta-ee weblogic quartz-scheduler


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

      如果您想在不等待执行作业完成的情况下关闭:

      scheduler.shutdown(false);
      

      查看this page了解更多信息。

      【讨论】:

        【解决方案3】:

        应用程序关闭时,您必须调用

                scheduler.shutdown();
        

        有时你必须做一个 Thread.sleep(1000);让它也正常关闭。

        在 ContextLoad 侦听器或您拥有的其他关闭挂钩中执行此操作。

        获取实例取决于你如何设置quartz,但默认调度器可以这样获取:

                Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        

        更多信息请参见http://www.quartz-scheduler.org/docs/1.x/quick_start_guide.html

        【讨论】:

          猜你喜欢
          • 2021-12-03
          • 2012-07-16
          • 2018-10-17
          • 2017-09-05
          • 2018-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多