1 packagecom.datcent.downloadCSV.quartzManager;2
3 importorg.quartz.CronTrigger ;4 importorg.quartz.JobDetail ;5 importorg.quartz.Scheduler ;6
7 /**
8 *@author作者xujingyang. E-mail:xjy06@foxmail.com9 *@version创建时间:2018年1月17日 下午3:28:1410 * @类说明: Quartz调度管理器11 */
12 public classQuartzManager {13 private static String JOB_GROUP_NAME = "EXTJWEB_JOBGROUP_NAME";14 private static String TRIGGER_GROUP_NAME = "EXTJWEB_TRIGGERGROUP_NAME";15
16 /**
17 * @Description: 添加一个定时任务,使用默认的任务组名,触发器名,触发器组名18 *19 *@paramsched20 * 调度器21 *22 *@paramjobName23 * 任务名24 *@paramcls25 * 任务26 *@paramtime27 * 时间设置,参考quartz说明文档28 *29 * @Title: QuartzManager.java30 */
31 public static void addJob(Scheduler sched, String jobName, @SuppressWarnings("rawtypes") Class cls, String time) {32 try{33 JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, cls);//任务名,任务组,任务执行类34 //触发器
35 CronTrigger trigger = new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
36 trigger.setCronExpression(time);//触发器时间设定
37 sched.scheduleJob(jobDetail, trigger);38 //启动
39 if (!sched.isShutdown()) {40 sched.start();41 }42 } catch(Exception e) {43 throw newRuntimeException(e);44 }45 }46
47 /**
48 * @Description: 添加一个定时任务49 *50 *@paramsched51 * 调度器52 *53 *@paramjobName54 * 任务名55 *@paramjobGroupName56 * 任务组名57 *@paramtriggerName58 * 触发器名59 *@paramtriggerGroupName60 * 触发器组名61 *@paramjobClass62 * 任务63 *@paramtime64 * 时间设置,参考quartz说明文档65 *66 * @Title: QuartzManager.java67 */
68 public static voidaddJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,69 String triggerGroupName, @SuppressWarnings("rawtypes") Class jobClass, String time) {70 try{71 JobDetail jobDetail = new JobDetail(jobName, jobGroupName, jobClass);//任务名,任务组,任务执行类72 //触发器
73 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组
74 trigger.setCronExpression(time);//触发器时间设定
75 sched.scheduleJob(jobDetail, trigger);76 } catch(Exception e) {77 throw newRuntimeException(e);78 }79 }80
81 /**
82 * @Description: 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)83 *84 *@paramsched85 * 调度器86 *@paramjobName87 *@paramtime88 *89 * @Title: QuartzManager.java90 */
91 @SuppressWarnings("rawtypes")92 public static voidmodifyJobTime(Scheduler sched, String jobName, String time) {93 try{94 CronTrigger trigger =(CronTrigger) sched.getTrigger(jobName, TRIGGER_GROUP_NAME);95 if (trigger == null) {96 return;97 }98 String oldTime =trigger.getCronExpression();99 if (!oldTime.equalsIgnoreCase(time)) {100 JobDetail jobDetail =sched.getJobDetail(jobName, JOB_GROUP_NAME);101 Class objJobClass =jobDetail.getJobClass();102 removeJob(sched, jobName);103 addJob(sched, jobName, objJobClass, time);104 }105 } catch(Exception e) {106 throw newRuntimeException(e);107 }108 }109
110 /**
111 * @Description: 修改一个任务的触发时间112 *113 *@paramsched114 * 调度器 *115 *@paramsched116 * 调度器117 *@paramtriggerName118 *@paramtriggerGroupName119 *@paramtime120 *121 * @Title: QuartzManager.java122 */
123 public static voidmodifyJobTime(Scheduler sched, String triggerName, String triggerGroupName, String time) {124 try{125 CronTrigger trigger =(CronTrigger) sched.getTrigger(triggerName, triggerGroupName);126 if (trigger == null) {127 return;128 }129 String oldTime =trigger.getCronExpression();130 if (!oldTime.equalsIgnoreCase(time)) {131 CronTrigger ct =(CronTrigger) trigger;132 //修改时间
133 ct.setCronExpression(time);134 //重启触发器
135 sched.resumeTrigger(triggerName, triggerGroupName);136 }137 } catch(Exception e) {138 throw newRuntimeException(e);139 }140 }141
142 /**
143 * @Description: 移除一个任务(使用默认的任务组名,触发器名,触发器组名)144 *145 *@paramsched146 * 调度器147 *@paramjobName148 *149 * @Title: QuartzManager.java150 */
151 public static voidremoveJob(Scheduler sched, String jobName) {152 try{153 sched.pauseTrigger(jobName, TRIGGER_GROUP_NAME);//停止触发器
154 sched.unscheduleJob(jobName, TRIGGER_GROUP_NAME);//移除触发器
155 sched.deleteJob(jobName, JOB_GROUP_NAME);//删除任务
156 } catch(Exception e) {157 throw newRuntimeException(e);158 }159 }160
161 /**
162 * @Description: 移除一个任务163 *164 *@paramsched165 * 调度器166 *@paramjobName167 *@paramjobGroupName168 *@paramtriggerName169 *@paramtriggerGroupName170 *171 * @Title: QuartzManager.java172 */
173 public static voidremoveJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,174 String triggerGroupName) {175 try{176 sched.pauseTrigger(triggerName, triggerGroupName);//停止触发器
177 sched.unscheduleJob(triggerName, triggerGroupName);//移除触发器
178 sched.deleteJob(jobName, jobGroupName);//删除任务
179 } catch(Exception e) {180 throw newRuntimeException(e);181 }182 }183
184 /**
185 * @Description:启动所有定时任务186 *187 *@paramsched188 * 调度器189 *190 * @Title: QuartzManager.java191 */
192 public static voidstartJobs(Scheduler sched) {193 try{194 sched.start();195 } catch(Exception e) {196 throw newRuntimeException(e);197 }198 }199
200 /**
201 * @Description:关闭所有定时任务202 *203 *204 *@paramsched205 * 调度器206 *207 *208 * @Title: QuartzManager.java209 */
210 public static voidshutdownJobs(Scheduler sched) {211 try{212 if (!sched.isShutdown()) {213 sched.shutdown();214 }215 } catch(Exception e) {216 throw newRuntimeException(e);217 }218 }219 }