gpt4 book ai didi

quartz-scheduler - 需要动态设置quartz cron表达式

转载 作者:行者123 更新时间:2023-12-04 17:37:57 24 4
gpt4 key购买 nike

我在我的网络应用程序(Servlet web 应用程序)中使用 quartz ,下面是 quartz .property 文件和 quartz .job.xml 的快照

quartz 属性

#===================================================
# Configure the Job Initialization Plugin
#===================================================

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = jobs.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false


<?xml version='1.0' encoding='utf-8'?>
<job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">

<schedule>
<job>
<name>my-very-clever-job</name>
<group>MYJOB_GROUP</group>

<description>The job description</description>
<job-class>com.acme.scheduler.job.ReportJob</job-class>
</job>

<trigger>
<cron>
<name>my-trigger</name>
<group>MYTRIGGER_GROUP</group>
<job-name>my-very-clever-job</job-name>

<job-group>MYJOB_GROUP</job-group>
<!-- trigger every night at 4:30 am -->
<cron-expression>0 30 4 * * ?</cron-expression>

</cron>
</trigger>
</schedule>
</job-scheduling-data>

一切正常,按此顺序。我需要允许用户按照他们想要的方式更改时间(cron 表达式)。我的问题是如何动态设置 cron 表达式。

最佳答案

像这样创建一个新的触发器不起作用。

CronTrigger cronTrigger = (CronTrigger) stdScheduler.getTrigger(triggerName,triggerGroupName);
CronTrigger newTriggerIns = new CronTrigger();
newTriggerIns.setJobName(cronTrigger.getJobName());
newTriggerIns.setName(triggerName);
newTriggerIns.setCronExpression(newCronExpression);
stdScheduler.rescheduleJob(triggerName,triggerGroupName,newTriggerIns); //doesn't work

您只需要像这样编辑原始触发器:
CronTrigger cronTrigger = (CronTrigger) stdScheduler.getTrigger(triggerName,triggerGroupName);
cronTrigger.setCronExpression(newCronExpression);
stdScheduler.rescheduleJob(triggerName,triggerGroupName,cronTrigger);

关于quartz-scheduler - 需要动态设置quartz cron表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208309/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com