Quartz实例关键字:

    技术2025-12-24  5

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1232849   Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。 实例: package example.quartz; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import java.util.Date; /** */ /** * @author starsiday */ /**/ /* 实现Job */ public    class QuartzReport implements Job {     /**/ /* 重载该函数 */      public   void execute(JobExecutionContext cntxt) throws JobExecutionException {         System.out.println( " Generating report - "                          + cntxt.getJobDetail().getJobDataMap().get( " type " )                         +   new Date());     }      public   static   void main(String[] args) {         try    {             SchedulerFactory schedFact =   new org.quartz.impl.StdSchedulerFactory();             Scheduler sched = schedFact.getScheduler();             sched.start();             JobDetail jobDetail =   new JobDetail( " Income Report " ,                     " Report Generation " , QuartzReport. class );             jobDetail.getJobDataMap().put( " type " , " FULL " );             CronTrigger trigger =   new CronTrigger( " Income Report " ,                     " Report Generation " );             /**/ /* 每1分钟执行一次 */              trigger.setCronExpression( " 0 0/1 * * * ? " );             sched.scheduleJob(jobDetail, trigger);         }   catch (Exception e) {             e.printStackTrace();         }      } } Quartz的配置文件:quartz.properties # Configure Main Scheduler Properties org.quartz.scheduler.instanceName = TestScheduler org.quartz.scheduler.instanceId = one # Configure ThreadPool org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount =   5 org.quartz.threadPool.threadPriority = 4 # Configure JobStore org.quartz.jobStore.misfireThreshold = 5000 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

    附:cronExpression配置说明

     

    字段 允许值 允许的特殊字符  0-59  , - * /  0-59  , - * /小时  0-23  , - * /日期  1-31  , - * ? / L W C月份  1-12 或者 JAN-DEC  , - * /星期  1-7 或者 SUN-SAT  , - * ? / L C #年(可选)  留空, 1970-2099  , - * /

     

    表达式 意义"0 0 12 * * ?"  每天中午12点触发"0 15 10 ? * *"  每天上午10:15触发"0 15 10 * * ?"  每天上午10:15触发"0 15 10 * * ? *"  每天上午10:15触发"0 15 10 * * ? 2005"  2005年的每天上午10:15触发"0 * 14 * * ?"  在每天下午2点到下午2:59期间的每1分钟触发"0 0/5 14 * * ?"  在每天下午2点到下午2:55期间的每5分钟触发 "0 0/5 14,18 * * ?"  在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 "0 0-5 14 * * ?"  在每天下午2点到下午2:05期间的每1分钟触发"0 10,44 14 ? 3 WED"  每年三月的星期三的下午2:10和2:44触发"0 15 10 ? * MON-FRI"  周一至周五的上午10:15触发"0 15 10 15 * ?"  每月15日上午10:15触发"0 15 10 L * ?"  每月最后一日的上午10:15触发"0 15 10 ? * 6L"  每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6L 2002-2005"  2002年至2005年的每月的最后一个星期五上午10:15触发"0 15 10 ? * 6#3"  每月的第三个星期五上午10:15触发

     

    特殊字符 意义*  表示所有值;?  表示未说明的值,即不关心它为何值;-  表示一个指定的范围;,  表示附加一个可能值;/  符号前表示开始时间,符号后表示每次递增的值;L("last")  ("last") "L" 用在day-of-month字段意思是 "这个月最后一天";用在 day-of-week字段, 它简单意思是 "7" or "SAT"。 如果在day-of-week字段里和数字联合使用,它的意思就是 "这个月的最后一个星期几" – 例如: "6L" means "这个月的最后一个星期五". 当我们用“L”时,不指明一个列表值或者范围是很重要的,不然的话,我们会得到一些意想不到的结果。W("weekday")  只能用在day-of-month字段。用来描叙最接近指定天的工作日(周一到周五)。例如:在day-of-month字段用“15W”指“最接近这个月第15天的工作日”,即如果这个月第15天是周六,那么触发器将会在这个月第14天即周五触发;如果这个月第15天是周日,那么触发器将会在这个月第16 天即周一触发;如果这个月第15天是周二,那么就在触发器这天触发。注意一点:这个用法只会在当前月计算值,不会越过当前月。“W”字符仅能在day- of-month指明一天,不能是一个范围或列表。也可以用“LW”来指定这个月的最后一个工作日。 #  只能用在day-of-week字段。用来指定这个月的第几个周几。例:在day-of-week字段用"6#3"指这个月第3个周五(6指周五,3指第3个)。如果指定的日期不存在,触发器就不会触发。 C  指和calendar联系后计算过的值。例:在day-of-month 字段用“5C”指在这个月第5天或之后包括calendar的第一天;在day-of-week字段用“1C”指在这周日或之后包括calendar的第一天。

    在MONTH和Day Of Week字段里对字母大小写不敏感。

    最新回复(0)