改变石英作业计划

编程入门 行业动态 更新时间:2024-10-10 01:25:04
本文介绍了改变石英作业计划的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在考虑使用Quartz安排我的应用程序,但在所有情况下,作业触发器似乎是一次性活动,并且对触发器的更改需要重新启动应用程序-seployed生效。 有没有办法可以让工作触发检查工作时间表的更改,而无需重新部署代码? 谢谢,

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. Is there any way I can have the job trigger check for changes to the job schedule without having to redeploy the code? Thanks,

推荐答案

  • 陷阱某些用户驱动的事件,例如更新文本值,例如a用于安排工作的cron-string
  • 找到并取消安排/删除旧作业并触发。
  • 再次安排作业,使用新触发器。

  • Trap some user-driven event, like updating a text value, for example a cron-string to schedule a job
  • Locate and unschedule/delete the old job and trigger.
  • 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); }

  • 更多推荐

    改变石英作业计划

    本文发布于:2023-11-25 20:55:19,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1631309.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:作业   计划   石英

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!