定时任务需要执行的工作:
PrintInfoJob.class
public class PrintInfoJob implements Job{
public PrintInfoJob(){}
/**
* Test Job == Print Job Name + Execute Time
* @param context
* @throws JobExecutionException
*/
public void execute(JobExecutionContext context)throws JobExecutionException{
System.out.println("PrintInfoJob executing... Date : " + new Date());
}
}
定制任务,使用 AnnualCalender 来排除银行节日(即:在某段时间,不指定定时任务的工作)
TestAnnualCalender.class
/**
* 使用AnnualCalender来排除银行节目
* @name TestAnnualCalender.java
* @author vivi
* @time 2009-9-3 上午09:20:43
*/
public class TestAnnualCalender {
static Log logger = LogFactory.getLog(TestAnnualCalender.class);
public static void main(String[] args) {
TestAnnualCalender example = new TestAnnualCalender();
example.startScheduler();
}
public void startScheduler(){
try{
//create and start the scheduler
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
scheduleJob(scheduler, PrintInfoJob.class);
logger.info("Scheduler starting up ... ...");
}catch(SchedulerException e){
logger.error(e);
}
}
private void scheduleJob(Scheduler scheduler, Class jobClass){
try{
//Create an instance of the Quartz AnnualCalendar
AnnualCalendar cal = new AnnualCalendar();
//exclude July 4th
Calendar gCal = GregorianCalendar.getInstance();
gCal.set(Calendar.MONTH, Calendar.JULY);
gCal.set(Calendar.DATE, 4);
cal.setDayExcluded(gCal, true);
//add to scheduler .replace existing, update triggers
scheduler.addCalendar("bankHolidays", cal, true, true);
/*
* Set up a trigger to start firing now, repeat forever
* and have (60000 ms) between each firing.
*/
Trigger trigger = org.quartz.TriggerUtils.makeImmediateTrigger("myTrigger", -1, 3000);
//trigger will use Calendar to exclude firing times
trigger.setCalendarName("bankHolidays");
JobDetail jobDetail = new JobDetail(jobClass.getName(),
Scheduler.DEFAULT_GROUP, jobClass);
//associate the trigger with the job in the scheduler
scheduler.scheduleJob(jobDetail, trigger);
}catch(SchedulerException ex){
logger.error(ex);
}
}
}