积累,创造,分享!

BlogJava 首页 新随笔 联系 聚合 管理
  25 Posts :: 13 Stories :: 26 Comments :: 0 Trackbacks

研究spring不深,但最近在使用spring的过程中,发现它总能给人带来点惊喜。
相信大家在做程序的时候应该会碰到时序调度一类的问题,即希望在指定时刻执行某段程序,在spring之前我的第一反应便是在数据库中加job。然而现在,Spring提供了支持时序调度的整合类Quartz,它把复杂的事情完全简单化了,在此我不想再赘叙关于spring中如何去整合Quartz,具体的spring详细配置请参照http://www.jactiongroup.net/reference/html/scheduling.html。使用过程很简单,
关于Quartz的说明参照官网的一段描述
What is Quartz?
Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components or EJBs. The Quartz Scheduler includes many enterprise-class features, such as JTA transactions and clustering.
您也可以参考以下链接进行更深入的了解http://www.opensymphony.com/quartz

在使用的过程中,需要再对cronExpression的配置解释一下,如果没有使用过unix的cron,这里确实有点让人迷惑,我便在这里迷惑了一把。
Cron表达式是字符串,它由六个或七个子表达式组成,它描述了不同的调度细节。这些子表达式被白色表达式隔开,格式为* * * * * *
以下的表格对表达式做出了解释
域          是否必须 允许的值       允许的字符
Seconds      YES       0-59                   , - * /
Minutes      YES       0-59                   , - * /
Hours        YES       0-23                    , - * /
Day of month YES       1-31              , - * ? / L W C
Month        YES       1-12 or JAN-DEC, - * /
Day of week  YES   1-7 or SUN-SAT , - * ? / L C #
Year         NO         empty,1970-2099,   - * /

比如:字符串“0 0 12 ? * WEB 意味着每周三上午12:00。
特殊字符的一些说明:
* 表示的是所有的值,比如在秒的位置上有* 则表示为每一秒种。所以,你在表示每5分钟执行一次的时候便不能写成 * 0/5 * * * ? 而应该是0 0/5 * * * ?
? 表示没有指定特别的值,是允许为月的某一天或者周的某一天字段的。它被用来限定"没有限定值"。这是有用的,当你需要限定一些事情在一个或两个字段中,但不是这里的。
有一个特别需要主意的地方便是*与?的搭配使用。比如在Day of month与Day of week全是* ,那边自相矛盾了。官网中给出的例子没出现过这种情况。
- 表示范围,比如Hours域中10-12,则表示 "the hours 10, 11 and 12".
,表示指定特别的附加值,比如"MON,WED,FRI" 在 day of week 域表示"the days Monday, Wednesday, and Friday"
/ 表示指定的增长范围。比如"0/15" 在秒的区域表示"0, 15, 30, and 45"秒。

"L"字符是允许用来月某天和周某天字段。这个字符是一个"last"的缩写,但是它有不同的意义在两个字段的其中之一。例如,这个值"L"在月字段的某一天意味着" 这个月的最后一天",31或者28等等。

posted on 2006-02-28 12:57 nighthawk 阅读(1065) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: