- 浏览: 115306 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (63)
- struts (7)
- spring (12)
- Hibernate (14)
- struts+spring+hibernate (11)
- Ajax (1)
- DWR (0)
- JSON (0)
- Junit (0)
- Lucene (15)
- Compass (0)
- Tomcat(Jsp) (0)
- MySql (0)
- JavaScript (0)
- Html (0)
- UML (0)
- Log4j (0)
- Ant (0)
- Acegi (0)
- (My)eclipse (0)
- java2 (0)
- Jakarta Commons (0)
- java Web (0)
- Ruby (0)
- Ruby On Rails (0)
- IBatis (0)
- 版本控制 (0)
- eXtremeComponents (0)
- SiteMesh (0)
- IT相关 (0)
- 电子商务 (0)
- 随笔 (0)
- 正则表达式 (0)
- 测试资料 (0)
- 个人收藏 (0)
- 开发经验 (0)
- 名词解释(java,j2ee) (1)
- 英语 (0)
- java规则引擎 (0)
- CMS系统 (0)
- XML操作 (0)
- jvm (0)
- 开源工具收集 (0)
- webService (2)
最新评论
-
锦毛鼠:
请问下您现在有没有这个demo啊?可以发我看看吗?
cxf webservice身份验证 -
z276356445t:
LZ,你写的类文件怎么和配置文件中的不一样呢,求解.
spring 定时器 -
j2eeli:
感谢共享!
spring 定时器 -
gimy:
写的很清楚,谢谢!
Spring-MultiActionController -
valgrind:
Exception in thread "main& ...
Lucene中文分词组件 JE-Analysis 1.4.0
<?xml version="1.0" encoding="UTF-8"?>
<bean id="sayHelloJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>test.timerTask.SayHelloTaskUsingQuartz</value>
</property>
</bean>
<!-- 关键在如下两个触发器的配置 -->
<!-- 类似于Java的简单触发器 -->
<bean id="helloTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="sayHelloJob"/>
</property>
<property name="startDelay">
<value>1000</value>
</property>
<property name="repeatInterval">
<value>3000</value>
</property>
</bean>
<!-- 复杂触发器 -->
<bean id="helloCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="sayHelloJob"/>
</property>
<property name="cronExpression">
<!-- 关键在配置此表达式 -->
<value>0 49 15 * * ?</value>
</property>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<ref bean="helloCronTrigger"/>
</property>
</bean>
当有任务触发时,spring会去调用quartzJob的execute()方法,在这个方法里我们就可以写一些我们自己的业务操作。
上面只是说了定时和任务出发时的处理,下面再看看如何动态的添加定时任务
package com.actmaps.scheduler;
import java.text.ParseException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.CronTrigger;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
/**
* TODO 设置定时任务的控制类
* @author PHeH<br>
* Created On 16:11:24
*/
public class Schedule{
/**
* TODO 添加一个新的触发器
* @return
* @author PHeH<br>
* Created On 2006-6-9 16:24:54
*/
public boolean insertTrigger()
{
try {
Scheduler scheduler = (Scheduler) StdSchedulerFactory.getDefaultScheduler( );
CronTrigger newCronTrigger = new CronTrigger();
try {
newCronTrigger.setName("newCronTrigger");
newCronTrigger.setCronExpression(this.formatQuartzString());
newCronTrigger.setJobName("quartzJob");
} catch (ParseException e) {
e.printStackTrace();
log.error("解析触发器字符串格式出错:"+e.getMessage());
}
scheduler.scheduleJob(newCronTrigger);
} catch (SchedulerException e1) {
e1.printStackTrace();
log.error("添加新触发器时发生SchedulerException异常:"+e1.getMessage());
}
return false;
}
}
对于复杂触发器的cronExpression,可借鉴linux的cron。
关于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触发 |
0 6 * * *
每两个小时
0 */2 * * *
晚上11点到早上8点之间每两个小时,早上八点
0 23-7/2,8 * * *
每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3
1月1日早上4点
0 4 1 1 *
</beans>
这里的JobDetail使用的是JobDetailBean,这样直接实例化test.timerTask.SayHelloTaskUsingQuartz。它存在一个问题,当test.timerTask.SayHelloTaskUsingQuartz需要使用依赖注入时,显然,这样直接实例化是没法进行注入的。spring还提供了另一种方法,如下
<bean id="quartzJob" class="com.actmaps.scheduler.QuartzJob">
<property name="reminderControl">
<ref bean="reminder"/>
</property>
</bean>
<bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="quartzJob"/>
</property>
<property name="targetMethod">
<value>execute</value>
</property>
</bean>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "spring-beans.dtd" >
<beans>
发表评论
-
Spring-MultiActionController
2007-09-27 13:50 4271如果为每个请求都设计一个controller的话,随着开发的进 ... -
Spring 對 Lob 的支援...
2007-09-27 13:49 1143如果要將 將檔案存入資料庫,我們在JDBC中可以使用CLOB與 ... -
深入Spring MVC framework之总体分析
2007-09-27 13:47 747在当今的MVC framework里,似乎Webwork2逐渐 ... -
Spring MVC框架的高级配置
2007-09-27 13:46 1052人们经常会在一台以上 ... -
Spring 网站资源
2007-09-27 13:45 2510Spring英文资源 Spring官方网站 http:/ ... -
使用 Spring 更好地处理 Struts 动作
2007-09-27 13:44 835您肯定已经听说过控制反转 (IOC) 设计模式,因为很长一段时 ... -
Spring技巧之活用FactoryBean
2007-09-27 13:42 680Spring中有两种类型的Bean,一种是普通Bean,另一种 ... -
Spring2.0技巧系列之简洁配置
2007-09-27 13:38 927Spring2.0在配置上调整了不少地方,增加更加灵活、简洁的 ... -
Spring2.0中新的Bean类型实现原理
2007-09-27 13:36 987作者:出处:blog责任编辑: 方舟 我们知道,在Sprin ... -
Spring Framework之最佳实践
2007-09-27 13:25 1078来源:http://www.gpowersoft.c ... -
Spring XML配置十二个最佳实践
2007-09-27 12:57 886在这篇文章里,对于Spring XML的配置,我将向你展示12 ...
相关推荐
spring定时器spring定时器spring定时器spring定时器spring定时器
springAop与spring定时器
spring定时器spring定时器spring定时器spring定时器
spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器spring定时器
java定时器 spring定时器:包括spring定时器的详细配置以及说明 包含所需的jar包
java spring 定时器(精确启动时间) 完整实例 cronExpression 表达式
spring定时器时间配置.时间的设置规则,并有代码予以演示。
spring定时器所需jar包spring定时器所需jar包spring定时器所需jar包
一个spring定时器的一个小文档,详细,
spring 定时器的实力使用方法,使用实例可以参考
使用spring 实现的两种定时任务,使用eclipse直接导入就可使用
JAVA获取当前时间以及JAVA_Spring定时器
spring 定时器 内含TimerTask实现和Quartz实现两种方式
spring定时器。这里有需要的包和applicationContext.xml配置文件
spring定时器Spring定时器的两种实现方式Java的Timer类和OpenSymphony的Quartz。
举个例子吧 可对仓库库存状况定时检查,并执行删除等其他操作
spring定时器实例
并非应用系统中发生的所有事情都是由用户的动作引起的。...在Spring中有两种流行配置:Java的Timer类和OpenSymphony的Quartz来执行调度任务。下面以给商丘做的接口集抄900到中间库的日冻结数据传输为例:
使用方法很简单,部署上去,打开服务器就可以了.不需要任何的操作. 主要看applicationContext.xml的配置就可以