【问题标题】:Quartz - Restart SchedulerQuartz - 重启调度器
【发布时间】:2013-11-11 10:43:39
【问题描述】:

我在一些 Java WAR 中使用 Quartz Scheduler (v2.2.1),在从数据库错误中恢复时遇到了一些麻烦。 WAR 部署在 JBOSS AS 7.1 中。

在 WAR 的初始化中,我启动了两个调度器:第一个将 JobStoreTX 配置为 clustered(WAR 部署在一个集群中),第二个, 配置了 RAMJobStore 以监控某些服务器特定设置。

RAM 调度程序还包括一个作业,它监视来自 MySQL 数据库的表。如果出现错误,最好让 Quartz 作业保持触发,但事实上有时调度程序被冻结并且这些作业不会被触发。

例如,我在测试中使用了以下方法,但没有成功重新实例化调度程序:

/**
 * Resets all scheduled jobs.
 */
public void reset(final long currentTime) {

    try {
        final StdSchedulerFactory schedFactory = new StdSchedulerFactory();
        schedFactory.initialize("quartz.properties");
        Scheduler myScheduler = schedFactory.getScheduler();

        if (myScheduler != null) {                
            myScheduler.clear();                
            myScheduler.shutdown(); --> HERE, THE THREAD IS LOCKED !!!                
            myScheduler = null;
        }

        myScheduler = schedFactory.getScheduler();
        loadJobs(myScheduler);
        myScheduler.start();
        //myScheduler.startDelayed(10);                        

    } catch (SchedulerException e) {
        LOG.error("Scheduler error !!!");
    }
}

重启 Quartz 调度器的正确方法是什么?

提前致谢

更新 1

由于 Scheduler 对象似乎是相同的...我修改了方法,但没有运气,在调用关闭之前重新实例化 StdSchedulerFactory 和 Scheduler。

您能提供任何功能示例吗?

谢谢

【问题讨论】:

    标签: java mysql jboss cluster-computing quartz-scheduler


    【解决方案1】:

    说调度程序被冻结意味着 API 有一个巨大的错误。您能否提供堆栈跟踪或在您提到的情况下引发的任何错误。

    根据我的经验,返回的调度程序对象将与您调用的次数相同

    schedFactory.getScheduler();

    您可能需要清理旧作业、取消引用它们或停止它们。

    正确的步骤是

    -1- 获取调度器对象

    -2- 通过调用 scheduler.shutdown() 停止调度器;

    -3- 再次加载作业并启动调度程序

    【讨论】:

    • 我也尝试调用关机。如果您查看我的代码,它会被注释掉,因为应用程序当时卡住了:(我尝试了几件事但没有运气......我无法提供堆栈跟踪,因为我没有检测到任何警告或错误(我的日志记录系统有警告级别)。
    【解决方案2】:

    使用石英 JMX 选项,MBean 具有 start()shutdown()clear() 等操作,让生活变得更加简单。

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 2013-03-17
      相关资源
      最近更新 更多