`

定时任务---使用 AnnualCalender 来排除银行节日

    博客分类:
  • Code
阅读更多

定时任务需要执行的工作:

   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);
    	}
    }

}
 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics