[英]Altering Quartz Job Schedule
I'm looking into scheduling my application with Quartz, but in all cases, the job trigger seems to be a one-time activity, and changes to the trigger need the application to be re-deployed to take effect. 我正在考虑使用Quartz调度我的应用程序,但是在所有情况下,作业触发器似乎都是一次性活动,对触发器的更改需要重新部署应用程序才能生效。
Is there any way I can have the job trigger check for changes to the job schedule without having to redeploy the code? 有什么方法可以使作业触发器检查作业时间表的更改而无需重新部署代码?
Thanks, 谢谢,
Schedule the job again, using the new trigger. 使用新的触发器再次安排作业。
public static <T> T scheduleCronJob(Class<T> clazz, String cronString, String uid){ try{ if(cronString == null){ throw new CronStringConfigurationException(); } String jobGroupName = "cronJobsGroup"; String jobName = "cronJob" + uid; String triggerGroupName = "cronTriggers"; String triggerName = "triggerFor" + uid; JobDetail jobDetail = new JobDetail(jobName, jobGroupName, clazz); CronTrigger trigger = new CronTrigger( triggerName, triggerGroupName, jobName, jobGroupName, cronString); JobDataMap jobDataMap = new JobDataMap(); jobDetail.setJobDataMap(jobDataMap); getScheduler().scheduleJob(jobDetail, trigger); } catch(Exception e){ // print error message, throw stack trace } return null; } public static void reloadCronJob(Class clazz, String cronString, String uid) throws SystemException, ParseException, SchedulerException, CronStringConfigurationException, PortalException{ // locate the job String jobGroupName = "cronJobs"; String jobName = "jobFor" + uid; if(cronString == null){ throw new CronStringConfigurationException(); } JobDetail jobDetail = null; Class<?> jobClass = null; // remove the old job/trigger if it exists try{ jobDetail = scheduler.getJobDetail(jobName, jobGroupName); if(jobDetail != null){ jobClass = jobDetail.getJobClass(); } scheduler.deleteJob(jobName, jobGroupName); } catch(Exception e){ e.printStackTrace(); } if(jobClass == null){ jobClass = clazz; } // create a new trigger scheduleCronJob(jobClass, expandoColumnName, uid); System.out.println("(re)scheduled job " + jobName + " using new cron string " + cronString); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.