Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英-重新启动调度程序_Java_Mysql_Jboss_Cluster Computing_Quartz Scheduler - Fatal编程技术网

Java 石英-重新启动调度程序

Java 石英-重新启动调度程序,java,mysql,jboss,cluster-computing,quartz-scheduler,Java,Mysql,Jboss,Cluster Computing,Quartz Scheduler,我在一些Java战争中使用Quartz Scheduler(v2.2.1),从数据库错误中恢复时遇到一些问题。战争部署在JBOSS AS 7.1中 在WAR的初始化过程中,我启动了两个调度程序:第一个配置了JobStoreTX作为clustered(WAR部署在一个集群中),第二个配置了RAMJobStore,以便监视一些特定于服务器的设置 RAM调度程序还包括一个作业,用于监视MySQL数据库中的表。在发生错误的情况下,最好保持Quartz作业启动,但事实是,有时调度程序被冻结,而这些作业不会

我在一些Java战争中使用Quartz Scheduler(v2.2.1),从数据库错误中恢复时遇到一些问题。战争部署在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

由于调度程序对象似乎是相同的…我修改了该方法,但运气不好,在调用shutdown之前重新实例化了StdSchedulerFactory和调度程序

你能提供一些功能性的例子吗


谢谢你说调度程序被冻结意味着API有一个巨大的bug。请您提供堆栈跟踪或您提到的案例中抛出的任何错误

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

schedFactory.getScheduler()

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

正确的步骤是

-1-获取调度程序对象

-2-通过调用scheduler.shutdown()停止计划程序

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


使用quartz JMX选项,MBean具有诸如
start()
shutdown()
clear()
等操作,使生活更加简单。

我还尝试调用shutdown。如果您查看我的代码,它会被注释,因为应用程序在这一点上卡住了:(我尝试了几件事情,但没有成功……我无法提供堆栈跟踪,因为我没有检测到任何警告或错误(我的日志记录系统具有警告级别)。