ScheduleJobFactory
来源:互联网 发布:网络商品交易改革 编辑:程序博客网 时间:2024/05/15 08:01
/* * file name: ScheduleJobFactory.java * copyright: Unis Cloud Information Technology Co., Ltd. Copyright 2015, All rights reserved * description: <description> * mofidy staff: zheng * mofidy time: 2015年8月22日 */package com.quartz;import java.util.List;import net.sf.json.JSONObject;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.quartz.CronScheduleBuilder;import org.quartz.CronTrigger;import org.quartz.Job;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SimpleScheduleBuilder;import org.quartz.Trigger;import org.quartz.TriggerBuilder;/** * To create scheduler job * * @author xpz * @version [version, Jul 18, 2015] * @see [about class/method] * @since [product/module version] */public class ScheduleJobFactory { private static Log log = LogFactory.getLog(ScheduleJobFactory.class); /*** * create a simpleScheduler job * * @param scheduler: the scheduler * @param jobName: the job name * @param jobGroup: the job group * @param triggerName: the trigger name * @param triggerGroup: the trigger group * @param ssb: the schedBuilder (eg:SimpleScheduleBuilder ssb = * SimpleScheduleBuilder.simpleSchedule() .withIntervalInMinutes(1) * .repeatForever();) * @param jobClass: the class which implement * job/StatefulJob(@DisallowConcurrentExecution) * @param params [explain parameter] * @return void [explain return type] * @exception throws [exception type] [explain exception] * @see [class,class#method,class#member] */ public static void createSimpleJob(Scheduler scheduler, String jobName, String jobGroup, String triggerName, String triggerGroup, SimpleScheduleBuilder ssb, Class<? extends Job> jobClass, JSONObject params) { // build a schedule job JobDetail jobDetail = JobBuilder.newJob(jobClass) .withIdentity(jobName, jobGroup) .build(); // set job name jobDetail.getJobDataMap().put("name", jobName); // set job params if (params != null) { jobDetail.getJobDataMap().put("params", params); } // build a schedule simpleTrigger Trigger trigger = TriggerBuilder.newTrigger() .withIdentity(triggerName, triggerGroup) .startNow() .withSchedule(ssb) .build(); // create a new schedule job try { scheduler.scheduleJob(jobDetail, trigger); } catch (SchedulerException e) { log.info("error with create a simple schedule job!", e); } } /*** * create a cronScheduler job * * @param scheduler: the scheduler * @param jobName: the job name * @param jobGroup: the job group * @param triggerName: the trigger name * @param triggerGroup: the trigger group * @param cronExpression: the cron expression * @param jobClass: the class which implements * job/StatefulJob(@DisallowConcurrentExecution) * @param params: the param need to trransfer * @return void [explain return type] * @exception throws [exception type] [explain exception] * @see [class,class#method,class#member] */ public static void createCronJob(Scheduler scheduler, String jobName, String jobGroup, String triggerName, String triggerGroup, String cronExpression, Class<? extends Job> jobClass, JSONObject params) { // build a schedule job JobDetail jobDetail = JobBuilder.newJob(jobClass) .withIdentity(jobName, jobGroup) .build(); // set job name jobDetail.getJobDataMap().put("name", jobName); // set job params if (params != null) { jobDetail.getJobDataMap().put("params", params); } // build a schedule cronTrigger CronTrigger trigger = TriggerBuilder.newTrigger() .withIdentity(triggerName, triggerGroup) .withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)) .build(); // create a new schedule job try { scheduler.scheduleJob(jobDetail, trigger); } catch (SchedulerException e) { log.info("error with create a simple schedule job!", e); } } /*** * delete job from scheduler * @param scheduler * @param job * @param jobGroup [explain parameter] * * @return void [explain return type] * @exception throws [exception type] [explain exception] * @see [class,class#method,class#member] */ public static void deleteJob(Scheduler scheduler, String jobName, String jobGroup){ try { JobKey jobKey = JobKey.jobKey(jobName, jobGroup); if(scheduler.checkExists(jobKey)){ scheduler.pauseJob(jobKey); //Get all Triggers that are associated with the identified job List<? extends Trigger> triggers = scheduler.getTriggersOfJob(jobKey); for(Trigger trigger : triggers){ scheduler.pauseTrigger(trigger.getKey()); boolean unscJobFlag = scheduler.unscheduleJob(trigger.getKey()); if(!unscJobFlag) log.error("error with unschedule job"); } } //Interrupt all instances of the identified InterruptableJob executing in this Scheduler instance. if(scheduler.checkExists(jobKey)){ boolean interruptFlag = scheduler.interrupt(jobKey); if(!interruptFlag) log.error("error with interrupt the job"); } if(scheduler.checkExists(jobKey)){ boolean delJobFlag = scheduler.deleteJob(jobKey); if(!delJobFlag) log.error("error with delete the job"); } } catch (SchedulerException e) { e.printStackTrace(); } } }
1 0
- ScheduleJobFactory
- Delphi 遍历所有目录和子目录下的文件名(可按后缀名遍历)
- Spring RequestMapping 注解介绍
- APNS推送
- android gson解析Json,Could not find class 'com.google.gson.Gson'
- JS高级程序设计11-DOM扩展
- ScheduleJobFactory
- 智能手机互联网时代,你还在干什么?
- hdu 2045 递推 不容易系列之(3)—— LELE的RPG难题
- 接Android外包
- jQuery对象和DOM对象,注意字体部分
- [SICP] 求值规则
- 图论之2-sat模板
- Leetcode: Lowest Common Ancestor of a Binary Search Tree
- ScheduleFactory(不同scheduler name)