import static org.quartz.JobBuilder.newJob;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerKey;
import org.quartz.impl.StdSchedulerFactory;
/**
* 定時任務管理類
*
*/
public class QuartzManager {
private static SchedulerFactory gSchedulerFactory = new StdSchedulerFactory();
private static String JOB_GROUP_NAME = "CPDS_JOBGROUP";
private static String TRIGGER_GROUP_NAME = "CPDS_TRIGGERGROUP";
public static String JOB_NAME_PRE = "JOB";
/**
* 添加job
* 2014-3-25 shan
*
* @param jobName
* @param className
* @param timeExp
* @throws ClassNotFoundException
* @throws SchedulerException
*/
public static void addJob(String jobName,String className,String timeExp) throws ClassNotFoundException, SchedulerException{
addJob(jobName,JOB_GROUP_NAME,className,timeExp,jobName,TRIGGER_GROUP_NAME);
}
/**
*
* 2014-3-25 shan
* 添加job
* @param jobName:job名稱
* @param jobGroup:job羣組
* @param className:job擴展執行類
* @param timeExp:運行時間表達式
* @param triggerName:觸發器名稱
* @param triggerGroup:觸發器羣組
*/
@SuppressWarnings("unchecked")
public static void addJob(String jobName,String jobGroup,String className,String timeExp,
String triggerName,String triggerGroup) throws ClassNotFoundException, SchedulerException{
Scheduler scheduler = gSchedulerFactory.getScheduler();
Class<? extends Job> cls = (Class<? extends Job>)Class.forName(className);
JobDetail job = newJob(cls).withIdentity(jobName, jobGroup).build();
job.getJobDataMap().put("id", jobName);
CronTrigger trigger = newTrigger()
.withIdentity(triggerName, triggerGroup)
.startNow()
.withSchedule(cronSchedule(timeExp))
.build();
scheduler.scheduleJob(job, trigger);
}
/**
* 運行job
* 2014-3-25 shan
* @throws SchedulerException
*
*/
public static void startJob() throws SchedulerException{
System.out.println("=============== job計劃任務調度器啓動 =================");
Scheduler scheduler = gSchedulerFactory.getScheduler();
scheduler.start();
}
/**
*
* 2014-3-25 shan
* 修改job運行時間參數
* @param triggerName:觸發器名稱
* @param timeExp:時間表達式
*/
public static void updateJobTime(String triggerName,String timeExp) throws SchedulerException{
updateJobTime(triggerName,TRIGGER_GROUP_NAME,timeExp);
}
/**
*
* 2014-3-25 shan
* 修改job運行時間參數
* @param triggerName:觸發器名稱
* @param trigerGroup:觸發器羣組
* @param timeExp:時間表達式
* @throws SchedulerException
*/
public static void updateJobTime(String triggerName,String trigerGroup,String timeExp) throws SchedulerException{
Scheduler scheduler = gSchedulerFactory.getScheduler();
CronTrigger oldTrigger = (CronTrigger) scheduler.getTrigger(new TriggerKey(triggerName,trigerGroup));
if(oldTrigger.getCronExpression().equals(timeExp))
return;
CronTrigger newTrigger = newTrigger()
.withIdentity(triggerName, trigerGroup)
.startNow()
.withSchedule(cronSchedule(timeExp))
.build();
scheduler.rescheduleJob(oldTrigger.getKey(), newTrigger);
}
/**
*
* 2014-3-25 shan
* 刪除job
* @param jobName:job名稱
* @throws SchedulerException
*/
public static void deleteJob(String jobName) throws SchedulerException{
deleteJob(jobName,JOB_GROUP_NAME);
}
/**
*
* 2014-3-25 shan
* 刪除job
* @param jobName:job名稱
* @param jobGroup:job羣組
* @throws SchedulerException
*/
public static void deleteJob(String jobName,String jobGroup) throws SchedulerException{
Scheduler scheduler = gSchedulerFactory.getScheduler();
scheduler.deleteJob(new JobKey(jobName,jobGroup));
}
/**
*
* 2014-3-25 shan
* 停止job
* @throws SchedulerException
*/
public static void shutDown() throws SchedulerException{
System.out.println("=============== job計劃任務調度器關閉 =================");
Scheduler scheduler = gSchedulerFactory.getScheduler();
scheduler.shutdown(true);
}
}
以上是quartz-2.1.7的工具類 與1.6.5的工具類是不同的