Spring中配置定时器详解.doc_第1页
Spring中配置定时器详解.doc_第2页
Spring中配置定时器详解.doc_第3页
Spring中配置定时器详解.doc_第4页
Spring中配置定时器详解.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

现在想要获得在特定时间或者指定时间执行相应功能有两种做法在applicationContext.xml中写入如下Bean 1000 3600000 true 然后写SampleTask类,如下:package com.css.wam.portlet;import java.util.ArrayList;import java.util.Calendar;import java.util.Iterator;import java.util.List;import java.util.TimerTask;import javax.servlet.ServletContext; 字串2import org.apache.jetspeed.security.SecurityException; 字串9import com.css.wam.service.WorkService; 字串1SuppressWarnings(unused)class SampleTask extends TimerTask 字串2 private static final int C_SCHEDULE_HOUR = 23;/设置指定时间 private WorkService workService; private List users; private List teams; private WorkPortlet work; public void setWorkService(WorkService workService) this.workService = workService; 字串7public void setWork(WorkPortlet work) this.work = work; 字串4 public SampleTask() SuppressWarnings(unchecked)public void run() Calendar cal = Calendar.getInstance(); try users = work.getUsers(); teams = new ArrayList(); for(Iterator it = users.iterator(); it.hasNext();) String teamname = work.getGroupsByUser(String)it.next(); teams.add(teamname); /查看当前时间与指定是否一致,一致则执行任务 if (C_SCHEDULE_HOUR = cal.get(Calendar.HOUR_OF_DAY) ) 字串6 workService.autoWorkOff(users, teams); 字串8 catch (SecurityException e) e.printStackTrace(); Spring定时器配置详解 完整的这是时间的设置规则org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时间,只需要设置其cronExpression属性。一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素。从左至右,这些元素的定义如下:1秒(059)2分钟(059)3小时(023)4月份中的日期(131)5月份(112或JANDEC)6星期中的日期(17或SUNSAT)7年份(19702099)0 0 10,14,16 * * ?每天上午10点,下午2点和下午4点0 0,15,30,45 * 1-10 * ?每月前10天每隔15分钟30 0 0 1 1 ? 2012在2012年1月1日午夜过30秒时0 0 8-5 ? * MON-FRI每个工作日的工作时间各个时间可用值如下:秒0-59 , - * /分0-59 , - * /小时0-23 , - * /日1-31 , - * ? / L W C月1-12 or JAN-DEC , - * /周几1-7 or SUN-SAT , - * ? / L C #年(可选字段) empty, 1970-2099 , - * /可用值详细分析如下:“*”字符可以用于所有字段,在“分”字段中设为*表示每一分钟的含义。“?”字符可以用在“日”和“周几”字段.它用来指定不明确的值.这在你需要指定这两个字段中的某一个值而不是另外一个的时候会被用到。在后面的例子中可以看到其含义。“-”字符被用来指定一个值的范围,比如在“小时”字段中设为10-12表示10点到12点。“,”字符指定数个值。比如在“周几”字段中设为MON,WED,FRI表示the days Monday, Wednesday, and Friday。“/”字符用来指定一个值的的增加幅度.比如在“秒”字段中设置为0/15表示第0, 15, 30,和45秒。而5/15则表示第5, 20, 35,和50.在/前加*字符相当于指定从0秒开始.每个字段都有一系列可以开始或结束的数值。对于“秒”和“分”字段来说,其数值范围为0到59,对于“小时”字段来说其为0到23,对于“日”字段来说为0到31,而对于“月”字段来说为1到12。/字段仅仅只是帮助你在允许的数值范围内从开始第n的值。“L”字符可用在“日”和“周几”这两个字段。它是last的缩写,但是在这两个字段中有不同的含义。例如,“日”字段中的L表示一个月中的最后一天 对于一月就是31号对于二月来说就是28号(非闰年)。而在“周几”字段中,它简单的表示7 or SAT,但是如果在“周几”字段中使用时跟在某个数字之后,它表示该月最后一个星期 比如6L表示该月最后一个周五。当使用L选项时,指定确定的列表或者范围非常重要,否则你会被结果搞糊涂的。“W”可用于“日”字段。用来指定历给定日期最近的工作日(周一到周五)。比如你将“日”字段设为15W,意为: 离该月15号最近的工作日。因此如果15号为周六,触发器会在14号即周五调用。如果15号为周日,触发器会在16号也就是周一触发。如果15号为周二,那么当天就会触发。然而如果你将“日”字段设为1W,而一号又是周六,触发器会于下周一也就是当月的3号触发,因为它不会越过当月的值的范围边界。W字符只能用于“日”字段的值为单独的一天而不是一系列值的时候。“L”和“W”可以组合用于“日”字段表示为LW,意为该月最后一个工作日。“#”字符可用于“周几”字段。该字符表示“该月第几个周”,比如6#3表示该月第三个周五( 6表示周五而#3该月第三个)。再比如: 2#1 =表示该月第一个周一而4#5 =该月第五个周三。注意如果你指定#5该月没有第五个“周”,该月是不会触发的。“C”字符可用于“日”和“周几”字段,它是calendar的缩写。它表示为基于相关的日历所计算出的值(如果有的话)。如果没有关联的日历,那它等同于包含全部日历。“日”字段值为5C表示日历中的第一天或者5号以后,“周几”字段值为1C则表示日历中的第一天或者周日以后。对于“月份”字段和“周几”字段来说合法的字符都不是大小写敏感的。一些例子:0 0 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分每分钟一次触发0 0/5 14 * * ?每天从下午2点开始到2:55分结束每5分钟一次触发0 0/5 14,18 * * ?每天的下午2点至2:55和6点至6点55分两个时间段内每5分钟一次触发0 0-5 14 * * ?每天14:00至14:05每分钟一次触发0 10,44 14 ? 3 WED三月的每周三的14:10和14: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这是applicationContext-service.xml 的配置 run 0 0 0 * * ? 这是具体代码的实现package com.kaluu.timertask;import java.util.TimerTask;import mons.logging.Log;import mons.logging.LogFactory;import org.springframework.beans.factory.annotation.Autowired;import com.kaluu.service.TbChannelLinkService;public class SpideSiteTimerTaskextends TimerTaskprivate static final Log logger = LogFactory.getLog(SpideSiteTimerTask.class);Autowiredprivate SpideTaskIfengForTime spideTaskIfengForTime;Overridepublic void run() try (-正在执行网站自动抓取-);spideTaskIfengForTime.startSpide(); (-执行网站自动抓取完毕-); catch (Exception e) e.printStackTrace(); 以上的配置是我经过测试的 能正常运行的2009-08-05 21:32Spring定时器的配置 spring-beans.xml使用Quartz定时 changeAll !- 0 0 6,12,20 * * ? - 0 0 23 * * ? 简单定时 updateNowSgList 10000 1296000000 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为 1.秒(059) 2.分钟(059) 3.小时(023) 4.天(月)(031,但是你需要考虑你月的天数) 5.月(011) 6.天(星期)(17 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(19702099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于月份中的日期和星期中的日期这两个元素互斥的,必须要对其中一个设置?. 0 0 10,14,16 * * ? 每天上午10点,下午2点,4点0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时0 0 12 ? * WED 表示每个星期三中午12点 有些子表达式能包含一些范围或列表 例如:子表达式(天(星期)可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT” “*”字符代表所有可能的值 因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期)表示星期的每一天 “/”字符用来指定数值的增量 例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟 ;在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样 “?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值 当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?” “L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写 但是它在两个子表达式里的含义是不同的。 在天(月)子表达式中,“L”表示一个月的最后一天 ,在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT 如果在“L”前有具体的内容,它就具有其他的含义了 例如:“6L”表示这个月的倒数第天,“”表示这个月的最后一个星期五 注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题 1000 50000 clear 0 0 0 * * ? 2008年08月08日 星期五 09:31Spring中配置定时器详解现在想要获得在特定时间或者指定时间执行相应功能有两种做法在applicationContext.xml中写入如下Bean 1000 3600000 true 然后写SampleTask类,如下:package com.css.wam.portlet;import java.util.ArrayList;import java.util.Calendar;import java.util.Iterator;import java.util.List;import java.util.TimerTask;import javax.servlet.ServletContext; 字串2import org.apache.jetspeed.security.SecurityException; 字串9import com.css.wam.service.WorkService; 字串1SuppressWarnings(unused)class SampleTask extends TimerTask 字串2 private static final int C_SCHEDULE_HOUR = 23;/设置指定时间 private WorkService workService; private List users; private List teams; priva

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论