听说来自这里www.ydyrx.com

转载的:

最近公司要用定时任务,自己想着学习并完成任务,百度,google,360,必应,能用的搜索都用了,参差不齐,搞了一整天,也没找到一个好的例子。没办法,励志要写一个给新手用,破解迷茫。

我这里是spring3.1.0+quartz2.1.7 用的持久化方式定时的相关参数存储到数据库里的

首先要引入jar包,

我这边用的是quartz2.1.7  如果maven工程的话是这样的

<dependency>

<groupId>org.quartz-scheduler</groupId>

<artifactId>quartz</artifactId>

<version>2.1.7</version>

</dependency>

jar包就不传了,要是有人需要再说。

写配置文件

spring-quartz.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
  6. <bean name="openLockJob"
  7. class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
  8. <property name="jobClass" value="com.asp.rc.service.OpenLockTimerHzOwnerServiceNew" />
  9. <property name="durability" value="true"></property>
  10. </bean>
  11. <bean id="openLock"
  12. class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  13. <property name="jobDetail">
  14. <ref bean="openLockJob" />
  15. </property>
  16. <!-- 设置每天03:00:00秒执行定时器 -->
  17. <property name="cronExpression">
  18. <value>0/20 * * * * ?</value>
  19. </property>
  20. </bean>
  21.  
  22. <bean id="schedulerFactoryBean"
  23. class="org.springframework.scheduling.quartz.SchedulerFactoryBean" destroy-method="destroy">
  24.  
  25. <property name="triggers">
  26. <list>
  27. <ref bean="openLock" />
  28. </list>
  29. </property>
  30. <property name="applicationContextSchedulerContextKey" value="applicationContext" />
  31. <property name="configLocation" value="classpath:quartz.properties" />
  32. </bean>
  33.  
  34. </beans>

然后是quartz.property

  1. # Default Properties file for use by StdSchedulerFactory
  2. # to create a Quartz Scheduler Instance, if a different
  3. # properties file is not explicitly specified.
  4. #
  5.  
  6. #==============================================================
  7. #Configure Main Scheduler Properties
  8. #==============================================================
  9. org.quartz.scheduler.instanceName = quartzScheduler
  10. org.quartz.scheduler.instanceId = AUTO
  11.  
  12. #==============================================================
  13. #Configure JobStore
  14. #==============================================================
  15. org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
  16. org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  17. org.quartz.jobStore.tablePrefix = QRTZ_
  18. org.quartz.jobStore.isClustered = true
  19. org.quartz.jobStore.clusterCheckinInterval = 600000
  20. org.quartz.jobStore.dataSource = myDS
  21.  
  22. #==============================================================
  23. #Configure DataSource
  24. #==============================================================
  25. org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
  26. org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3306/quartzdb?useUnicode=true&amp;characterEncoding=UTF-8
  27. org.quartz.dataSource.myDS.user = root
  28. org.quartz.dataSource.myDS.password = www.ydyrx.com
  29. org.quartz.dataSource.myDS.maxConnections = 30
  30.  
  31. #==============================================================
  32. #Configure ThreadPool
  33. #==============================================================
  34. org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
  35. org.quartz.threadPool.threadCount = 10
  36. org.quartz.threadPool.threadPriority = 5
  37. org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

这个文件你拿过来改下连接就行

然后是创建数据库

数据库名称是  quartzdb

  1. sql
  2.  
  3. /*
  4. Navicat MySQL Data Transfer
  5.  
  6. Source Server : localhost
  7. Source Server Version : 50611
  8. Source Host : localhost
  9. Source Database : quartzdb
  10.  
  11. Target Server Version : 50611
  12. File Encoding : utf-8
  13. From:http:www.ydyrx.com
  14. Date: 12/09/2013 11:41:36 AM
  15. */
  16.  
  17. SET NAMES utf8;
  18. ;
  19.  
  20. -- ----------------------------
  21. -- Table structure for `QRTZ_BLOB_TRIGGERS`
  22. -- ----------------------------
  23. DROP TABLE IF EXISTS `QRTZ_BLOB_TRIGGERS`;
  24. CREATE TABLE `QRTZ_BLOB_TRIGGERS` (
  25. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  26. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  27. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  28. `BLOB_DATA` blob,
  29. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  30. KEY `SCHED_NAME` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  31. CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
  32. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  33.  
  34. -- ----------------------------
  35. -- Table structure for `QRTZ_CALENDARS`
  36. -- ----------------------------
  37. DROP TABLE IF EXISTS `QRTZ_CALENDARS`;
  38. CREATE TABLE `QRTZ_CALENDARS` (
  39. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  40. `CALENDAR_NAME` ) COLLATE utf8_bin NOT NULL,
  41. `CALENDAR` blob NOT NULL,
  42. PRIMARY KEY (`SCHED_NAME`,`CALENDAR_NAME`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  44.  
  45. -- ----------------------------
  46. -- Table structure for `QRTZ_CRON_TRIGGERS`
  47. -- ----------------------------
  48. DROP TABLE IF EXISTS `QRTZ_CRON_TRIGGERS`;
  49. CREATE TABLE `QRTZ_CRON_TRIGGERS` (
  50. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  51. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  52. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  53. `CRON_EXPRESSION` ) COLLATE utf8_bin NOT NULL,
  54. `TIME_ZONE_ID` ) COLLATE utf8_bin DEFAULT NULL,
  55. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  56. CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
  57. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  58.  
  59. -- ----------------------------
  60. -- Table structure for `QRTZ_FIRED_TRIGGERS`
  61. -- ----------------------------
  62. DROP TABLE IF EXISTS `QRTZ_FIRED_TRIGGERS`;
  63. CREATE TABLE `QRTZ_FIRED_TRIGGERS` (
  64. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  65. `ENTRY_ID` ) COLLATE utf8_bin NOT NULL,
  66. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  67. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  68. `INSTANCE_NAME` ) COLLATE utf8_bin NOT NULL,
  69. `FIRED_TIME` ) NOT NULL,
  70. `PRIORITY` ) NOT NULL,
  71. `STATE` ) COLLATE utf8_bin NOT NULL,
  72. `JOB_NAME` ) COLLATE utf8_bin DEFAULT NULL,
  73. `JOB_GROUP` ) COLLATE utf8_bin DEFAULT NULL,
  74. `IS_NONCONCURRENT` ) COLLATE utf8_bin DEFAULT NULL,
  75. `REQUESTS_RECOVERY` ) COLLATE utf8_bin DEFAULT NULL,
  76. PRIMARY KEY (`SCHED_NAME`,`ENTRY_ID`),
  77. KEY `IDX_QRTZ_FT_TRIG_INST_NAME` (`SCHED_NAME`,`INSTANCE_NAME`),
  78. KEY `IDX_QRTZ_FT_INST_JOB_REQ_RCVRY` (`SCHED_NAME`,`INSTANCE_NAME`,`REQUESTS_RECOVERY`),
  79. KEY `IDX_QRTZ_FT_J_G` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`),
  80. KEY `IDX_QRTZ_FT_JG` (`SCHED_NAME`,`JOB_GROUP`),
  81. KEY `IDX_QRTZ_FT_T_G` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  82. KEY `IDX_QRTZ_FT_TG` (`SCHED_NAME`,`TRIGGER_GROUP`)
  83. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  84.  
  85. -- ----------------------------
  86. -- Table structure for `QRTZ_JOB_DETAILS`
  87. -- ----------------------------
  88. DROP TABLE IF EXISTS `QRTZ_JOB_DETAILS`;
  89. CREATE TABLE `QRTZ_JOB_DETAILS` (
  90. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  91. `JOB_NAME` ) COLLATE utf8_bin NOT NULL,
  92. `JOB_GROUP` ) COLLATE utf8_bin NOT NULL,
  93. `DESCRIPTION` ) COLLATE utf8_bin DEFAULT NULL,
  94. `JOB_CLASS_NAME` ) COLLATE utf8_bin NOT NULL,
  95. `IS_DURABLE` ) COLLATE utf8_bin NOT NULL,
  96. `IS_NONCONCURRENT` ) COLLATE utf8_bin NOT NULL,
  97. `IS_UPDATE_DATA` ) COLLATE utf8_bin NOT NULL,
  98. `REQUESTS_RECOVERY` ) COLLATE utf8_bin NOT NULL,
  99. `JOB_DATA` blob,
  100. PRIMARY KEY (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`),
  101. KEY `IDX_QRTZ_J_REQ_RECOVERY` (`SCHED_NAME`,`REQUESTS_RECOVERY`),
  102. KEY `IDX_QRTZ_J_GRP` (`SCHED_NAME`,`JOB_GROUP`)
  103. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  104.  
  105. -- ----------------------------
  106. -- Table structure for `QRTZ_LOCKS`
  107. -- ----------------------------
  108. DROP TABLE IF EXISTS `QRTZ_LOCKS`;
  109. CREATE TABLE `QRTZ_LOCKS` (
  110. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  111. `LOCK_NAME` ) COLLATE utf8_bin NOT NULL,
  112. PRIMARY KEY (`SCHED_NAME`,`LOCK_NAME`)
  113. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  114.  
  115. -- ----------------------------
  116. -- Table structure for `QRTZ_PAUSED_TRIGGER_GRPS`
  117. -- ----------------------------
  118. DROP TABLE IF EXISTS `QRTZ_PAUSED_TRIGGER_GRPS`;
  119. CREATE TABLE `QRTZ_PAUSED_TRIGGER_GRPS` (
  120. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  121. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  122. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_GROUP`)
  123. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  124.  
  125. -- ----------------------------
  126. -- Table structure for `QRTZ_SCHEDULER_STATE`
  127. -- ----------------------------
  128. DROP TABLE IF EXISTS `QRTZ_SCHEDULER_STATE`;
  129. CREATE TABLE `QRTZ_SCHEDULER_STATE` (
  130. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  131. `INSTANCE_NAME` ) COLLATE utf8_bin NOT NULL,
  132. `LAST_CHECKIN_TIME` ) NOT NULL,
  133. `CHECKIN_INTERVAL` ) NOT NULL,
  134. PRIMARY KEY (`SCHED_NAME`,`INSTANCE_NAME`)
  135. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  136.  
  137. -- ----------------------------
  138. -- Table structure for `QRTZ_SIMPLE_TRIGGERS`
  139. -- ----------------------------
  140. DROP TABLE IF EXISTS `QRTZ_SIMPLE_TRIGGERS`;
  141. CREATE TABLE `QRTZ_SIMPLE_TRIGGERS` (
  142. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  143. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  144. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  145. `REPEAT_COUNT` ) NOT NULL,
  146. `REPEAT_INTERVAL` ) NOT NULL,
  147. `TIMES_TRIGGERED` ) NOT NULL,
  148. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  149. CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
  150. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  151.  
  152. -- ----------------------------
  153. -- Table structure for `QRTZ_SIMPROP_TRIGGERS`
  154. -- ----------------------------
  155. DROP TABLE IF EXISTS `QRTZ_SIMPROP_TRIGGERS`;
  156. CREATE TABLE `QRTZ_SIMPROP_TRIGGERS` (
  157. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  158. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  159. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  160. `STR_PROP_1` ) COLLATE utf8_bin DEFAULT NULL,
  161. `STR_PROP_2` ) COLLATE utf8_bin DEFAULT NULL,
  162. `STR_PROP_3` ) COLLATE utf8_bin DEFAULT NULL,
  163. `INT_PROP_1` ) DEFAULT NULL,
  164. `INT_PROP_2` ) DEFAULT NULL,
  165. `LONG_PROP_1` ) DEFAULT NULL,
  166. `LONG_PROP_2` ) DEFAULT NULL,
  167. `DEC_PROP_1` ,) DEFAULT NULL,
  168. `DEC_PROP_2` ,) DEFAULT NULL,
  169. `BOOL_PROP_1` ) COLLATE utf8_bin DEFAULT NULL,
  170. `BOOL_PROP_2` ) COLLATE utf8_bin DEFAULT NULL,
  171. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  172. CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`) REFERENCES `QRTZ_TRIGGERS` (`SCHED_NAME`, `TRIGGER_NAME`, `TRIGGER_GROUP`)
  173. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  174.  
  175. -- ----------------------------
  176. -- Table structure for `QRTZ_TRIGGERS`
  177. -- ----------------------------
  178. DROP TABLE IF EXISTS `QRTZ_TRIGGERS`;
  179. CREATE TABLE `QRTZ_TRIGGERS` (
  180. `SCHED_NAME` ) COLLATE utf8_bin NOT NULL,
  181. `TRIGGER_NAME` ) COLLATE utf8_bin NOT NULL,
  182. `TRIGGER_GROUP` ) COLLATE utf8_bin NOT NULL,
  183. `JOB_NAME` ) COLLATE utf8_bin NOT NULL,
  184. `JOB_GROUP` ) COLLATE utf8_bin NOT NULL,
  185. `DESCRIPTION` ) COLLATE utf8_bin DEFAULT NULL,
  186. `NEXT_FIRE_TIME` ) DEFAULT NULL,
  187. `PREV_FIRE_TIME` ) DEFAULT NULL,
  188. `PRIORITY` ) DEFAULT NULL,
  189. `TRIGGER_STATE` ) COLLATE utf8_bin NOT NULL,
  190. `TRIGGER_TYPE` ) COLLATE utf8_bin NOT NULL,
  191. `START_TIME` ) NOT NULL,
  192. `END_TIME` ) DEFAULT NULL,
  193. `CALENDAR_NAME` ) COLLATE utf8_bin DEFAULT NULL,
  194. `MISFIRE_INSTR` ) DEFAULT NULL,
  195. `JOB_DATA` blob,
  196. PRIMARY KEY (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`),
  197. KEY `IDX_QRTZ_T_J` (`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`),
  198. KEY `IDX_QRTZ_T_JG` (`SCHED_NAME`,`JOB_GROUP`),
  199. KEY `IDX_QRTZ_T_C` (`SCHED_NAME`,`CALENDAR_NAME`),
  200. KEY `IDX_QRTZ_T_G` (`SCHED_NAME`,`TRIGGER_GROUP`),
  201. KEY `IDX_QRTZ_T_STATE` (`SCHED_NAME`,`TRIGGER_STATE`),
  202. KEY `IDX_QRTZ_T_N_STATE` (`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`),
  203. KEY `IDX_QRTZ_T_N_G_STATE` (`SCHED_NAME`,`TRIGGER_GROUP`,`TRIGGER_STATE`),
  204. KEY `IDX_QRTZ_T_NEXT_FIRE_TIME` (`SCHED_NAME`,`NEXT_FIRE_TIME`),
  205. KEY `IDX_QRTZ_T_NFT_ST` (`SCHED_NAME`,`TRIGGER_STATE`,`NEXT_FIRE_TIME`),
  206. KEY `IDX_QRTZ_T_NFT_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`),
  207. KEY `IDX_QRTZ_T_NFT_ST_MISFIRE` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_STATE`),
  208. KEY `IDX_QRTZ_T_NFT_ST_MISFIRE_GRP` (`SCHED_NAME`,`MISFIRE_INSTR`,`NEXT_FIRE_TIME`,`TRIGGER_GROUP`,`TRIGGER_STATE`),
  209. CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`) REFERENCES `QRTZ_JOB_DETAILS` (`SCHED_NAME`, `JOB_NAME`, `JOB_GROUP`)
  210. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
  211.  
  212. ;

接下来就是写方法了,只需要继承 QuartzJobBean

并重写executeInternal方法就行,要自动执行的命令放进这个方法里就可以

  1. java
  2.  
  3. public class Try extends QuartzJobBean {
  4.  
  5. @Override
  6. protected void executeInternal(JobExecutionContext context)
  7. throws JobExecutionException {
  8. // TODO Auto-generated method stub
  9. System.out.println("TRy");
  10. }
  11.  
  12. }

接下来就可以运行了

关于时间配置

这些星号由左到右按顺序代表 :     *    *     *     *    *     *   *     
                           格式: [秒] [分] [小时] [日] [月] [周] [年]
序号 说明 
  是否必填  允许填写的值 允许的通配符
1  秒  是  0-59    , - * / 
2  分  是  0-59 
   , - * / 
3 小时  是  0-23   , - * / 
4  日  是  1-31   , - * ? / L W 
5  月  是  1-12 or JAN-DEC   , - * / 
6  周  是  1-7 or SUN-SAT   , - * ? / L # 
7  年  否  empty 或 1970-2099  , - * /

通配符说明: 
* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。 
? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ? 
- 表示区间。例如 在小时上设置 "10-12",表示 10,11,12点都会触发。 
, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发 
/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。 
L
表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]),
在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本
月最后一个星期五" 
W
表示离指定日期的最近那个工作日(周一至周五).
例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发,
如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为
"1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").

小提示 
'L'和 'W'可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发(一般指发工资 )
# 序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用在母亲节和父亲节再合适不过了)

小提示 
周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.     
常用示例:
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分每分触发 
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 
每天下午的 18点到18点59分(整点开始,每隔5分触发)

0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发 
0
10,44 14 ? 3 WED     3月分每周三下午的 2点10分和2点44分触发
(特殊情况,在一个时间设置里,执行两次
或                                                             两次以上的情况) 
0 59 2 ? * FRI    每周5凌晨2点59分触发; 
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 每月的第三周的星期五开始触发 
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次 
0 11 11 11 11 ? 每年的11月11号 11点11分触发(光棍节)

新手注意

1,注意如果不报错也不好使请确认是否引入spring-quartz.xml

2,如果报 与durability相关的错误,请确认你的spring版本,3.1.1有这个参数,3.1.0是没有的,不知道之前的版本有没有。

3,如果你要调用spring用注解自动注入的bean会失败,解决办法如下

  1. java
  2. public class SpringBeanJobFactory extends org.springframework.scheduling.quartz.SpringBeanJobFactory implements
  3. ApplicationContextAware {
  4. private ApplicationContext applicationContext;
  5.  
  6. @Override
  7. public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
  8. this.applicationContext = applicationContext;
  9. }
  10.  
  11. /**
  12. * 这里我们覆盖了super的createJobInstance方法,对其创建出来的类再进行autowire。
  13. */
  14. @Override
  15. protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {
  16. Object jobInstance = super.createJobInstance(bundle);
  17. applicationContext.getAutowireCapableBeanFactory().autowireBean(jobInstance);
  18. return jobInstance;
  19. }
  20.  
  21. }

然后在web.xml中配置

<listener>

<listener-class>com.asp.rc.spring.ShutdownQuartzListener</listener-class>

</listener>

在org.springframework.scheduling.quartz.SchedulerFactoryBean配置总填上这句

<property name="jobFactory">

<bean class="com.asp.rc.spring.SpringBeanJobFactory" />

</property>

如果你发现重启就不再运行了就把,qrtz_triggers表的TRIGGER_STATE中改成WAITING

根本的解决办法是加监听器

  1. java
  2.  
  3. public class ShutdownQuartzListener implements ServletContextListener {
  4.  
  5. /*
  6. * 获取相关bean进行shutdown
  7. *
  8. * @seejavax.servlet.ServletContextListener#contextDestroyed(javax.servlet.
  9. * ServletContextEvent)
  10. */
  11. @Override
  12. public void contextDestroyed(ServletContextEvent arg0) {
  13. WebApplicationContext webApplicationContext = (WebApplicationContext) arg0
  14. .getServletContext()
  15. .getAttribute(
  16. WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
  17. org.quartz.impl.StdScheduler startQuertz = (org.quartz.impl.StdScheduler) webApplicationContext
  18. .getBean("schedulerFactoryBean");
  19. if(startQuertz != null) {
  20. startQuertz.shutdown();
  21. }
  22. try {
  23. Thread.sleep(1000);
  24. } catch (InterruptedException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28.  
  29. /*
  30. * (non-Javadoc)
  31. *
  32. * @see
  33. * javax.servlet.ServletContextListener#contextInitialized(javax.servlet
  34. * .ServletContextEvent)
  35. */
  36. @Override
  37. public void contextInitialized(ServletContextEvent arg0) {
  38.  
  39. }
  40.  
  41. }

这里http://vieal.iteye.com/blog/1987389

spring3+quartz2的更多相关文章

  1. spring3.2.8+quartz2.2.0(比较全,对比quartz1.x的配置)

    spring3.2.8 + quartz2.2.0报错: java.lang.IncompatibleClassChangeError: class org.springframework.sched ...

  2. Spring3 整合Quartz2 实现定时任务

    一.Quartz简介 Quartz是一个由James House创立的开源项目,是一个功能强大的作业调度工具,可以计划的执行任务,定时.循环或在某一个时间来执行我们需要做的事,这可以给我们工作上带来很 ...

  3. Spring3.2.4集成quartz2.2.1定时任务(demo).

    在JavaEE系统中,我们会经常用到定时任务,下面是我自己写的一个demo. 前面几篇quartz博客感觉看的还是难懂 于是重新整理下 源码地址:http://pan.baidu.com/s/1BXH ...

  4. Spring3.2.3+Quartz2.2.1 整合配置

    步骤: 1.下载相关包 quartz-2.2.1.jar quartz-jobs-2.2.1.jar spring相关jar包 2.编写配置文件静态 <bean id="activat ...

  5. Spring3.2.11与Quartz2.2.1整合时内存泄漏的问题的解决

    Quartz是一款定时任务调度的开源框架,使用起来比较方便.并且Spring的support包对Quartz有集成.但是笔者在web应用使用的过程中却遇到了内存泄漏的问题. 问题的产生 笔者在使用Sp ...

  6. Spring3 M2 quartz-2.1.7 解决bean不能注入问题

    我们要达到这样的效果 public class CancelUnpaidOrderTask implements Job { @Autowired private AppOrderService or ...

  7. Spring-3.2.5 + Quartz-2.2.1 集群实例(Tomcat+Memcached+Quartz集群session共享)

    本例中我启动了两个Tomcat作效果测试,先看效果图: 现在我们关闭一个Tomcat 注意红线的位置和设置的参数有关 #org.quartz.jobStore.clusterCheckinInterv ...

  8. Spring3和Quartz2的应用实例

    /** * 任务调度类 * @author Joyce.Luo * @date 2015-3-31 下午03:32:04 * @version V3.0 * @since Tomcat6.0,Jdk1 ...

  9. Spring4 + Quartz-2.2.0集成实例

    Spring3.0不支持Quartz2.0,因为org.quartz.CronTrigger在2.0从class变成了一个interface造成IncompatibleClassChangeError ...

随机推荐

  1. ansible special topics

    1.加速模式运行playbook accelerate 对于使用ansible 1.5 及之后版本的用户,加速模式只在以下情况下有用处: (A) 管理红帽企业版 Linux 6 或者更早的那些依然使用 ...

  2. ReatEasy+用户指南----第9章@MatrixParam

    转载说明出处:http://blog.csdn.net/nndtdx/article/details/6870391 原文地址 http://docs.jboss.org/resteasy/docs/ ...

  3. nyoj_478_月老的烦恼(1)_201312101248

    月老的烦恼(1) 时间限制:1000 ms  |           内存限制:65535 KB 难度:3   描述 月老最近遇到了一个很棘手的问题,就是“剩男”“剩女”急速增长,而自己这边又人手不足 ...

  4. Maven: java.lang.ClassNotFoundException: org.eclipse.aether.spi.connector.Transfer$State

    在mac中使用maven compile时发生以下错误: Maven: java.lang.ClassNotFoundException: org.eclipse.aether.spi.connect ...

  5. 霸气側漏的HTML5--之--强大的form表单

    今天学习了一下html5,发现他真的太强大了,暂不说新增的画布,通信,本地存储等的炸天功能,就连表单也是异常的好用.忍不住发一篇博客和大家分享一下.原谅我标题党了.以后的html5的学习记录博文就以& ...

  6. vim copy termi

    用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴. 这样做:1. 将光标移动到要复制的文本开始的地方,按v进入可视模式.2. 将光标移动到要复制的文本的结束的地方,按y复制.此时vim会自动将 ...

  7. poi读取word2003(.doc文档)中的表格

    poi读取word2003(.doc文档)中的表格 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API.在网上见到好多通过po ...

  8. FFT模板——copied from hzwer

    /* Welcome Hacking Wish You High Rating */ #include<iostream> #include<cstdio> #include& ...

  9. 感知器算法 C++

    We can estimate the weight values for our training data using stochastic gradient descent. Stochasti ...

  10. bzoj1699

    st表 我还不会st表 f[i][j]表示[i,i+2^j)区间的最值 构造就像lca一样f[i][j]=f[i][j-1] f[i][j]=max(f[i][j-1],f[i+(1<<( ...