Quartz错误失火处理和作业恢复失败

我是JSP和Quartz调度的新手!在这个项目中,我试图使石英调度程序继续运行,以防服务器关闭然后忽略丢失的作业。

为此,我研究了JobPersistence,并按以下方式修改了quartz.properties文件:

org.quartz.threadPool.threadCount=5

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.tablePrefix = QRTZ_

org.quartz.jobStore.useProperties = true

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate

org.quartz.jobStore.dataSource = myDB

org.quartz.dataSource.myDB.driver = com.mysql.jdbc.Driver

org.quartz.dataSource.myDB.URL = jdbc:mysql://localhost:3306/contacts

org.quartz.dataSource.myDB.user = root

org.quartz.dataSource.myDB.password = root

web.xml文件包含以下内容:

...

<listener>

<listener-class>

org.quartz.ee.servlet.QuartzInitializerListener

</listener-class>

</listener>

...

我已经将表添加到数据库中,选择后可以看到它确实在表中插入了触发器。

触发器的构建如下:

Trigger trig = TriggerBuilder

.newTrigger()

.startAt(scal.getTime())

.withSchedule(

SimpleScheduleBuilder.simpleSchedule()

.withIntervalInMinutes(minutes).repeatForever())

.endAt(ecal.getTime()).build();

现在,当我运行Web应用程序时,我计划了一个作业并执行了。然后,我关闭tomcat服务器,然后重新启动它。它将以下错误输出到记录器:

org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: null [See nested exception: java.lang.NullPointerException]]

我曾经尝试在MySQLWorkbench中执行以下语句:

UPDATE QRTZ_TRIGGERS SET NEXT_FIRE_TIME=1 WHERE NEXT_FIRE_TIME < 0;

现在,我收到了这个新错误:

.manage - MisfireHandler: Error handling misfires: Unexpected runtime exception: null

org.quartz.JobPersistenceException: Unexpected runtime exception: null [See nested exception: java.lang.NullPointerException]

如果您要我编辑并包括stackTrace,则可以执行此操作…

回答:

删除useProperties = true并替换为

org.quartz.scheduler.misfirePolicy =  doNothing

去除 UPDATE

删除.withMisfireHandling()触发器上方的所有方法,并删除触发器.requestRecovery(true)上的JobDetail,以防万一。

另外,请确保在存在作业的情况下不要取消作业…

以上是 Quartz错误失火处理和作业恢复失败 的全部内容, 来源链接: utcz.com/qa/434808.html

回到顶部