无线&移动互联网技术研发
换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
Quartz 与 Spring 集成使用的实例
Posted on 2010-05-28 01:13
Gavin.lee
阅读(914)
评论(0)
编辑
收藏
所属分类:
SSH2 --Spring
在前面文章中,有举出不集成但用Quartz的应用,这里,我们通过Spring 的IOC来与Quartz集成使用,对于定时任务,我们可以让这个应用做为jar 小工具在linux下跑,也可以将应用单独放在一个容器里跑。这个视情况而定
一下是一个简单的应用,quartz + Spring 集成使用的核心就这Spring的配置文件中了
<?
xml version="1.0" encoding="UTF-8"
?>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context
="http://www.springframework.org/schema/context"
xmlns:aop
="http://www.springframework.org/schema/aop"
xmlns:tx
="http://www.springframework.org/schema/tx"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
>
<!--
*************************** 工作任务调度 ***************************
-->
<!--
要调用的工作类
-->
<
bean
id
="quartzJob_common"
class
="com.quartz.job.DoJobMethod"
></
bean
>
<!--
可继续加新的任务
-->
<!--
要调用的工作类结束
-->
<!--
定义调用对象和调用对象的方法
-->
<
bean
id
="jobtask1"
class
="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
>
<!--
调用的类
-->
<
property
name
="targetObject"
>
<
ref
bean
="quartzJob_common"
/>
</
property
>
<!--
调用类中的方法
-->
<
property
name
="targetMethod"
>
<
value
>
doMethod1
</
value
>
</
property
>
</
bean
>
<
bean
id
="jobtask2"
class
="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
>
<!--
调用的类
-->
<
property
name
="targetObject"
>
<
ref
bean
="quartzJob_common"
/>
</
property
>
<!--
调用类中的方法
-->
<
property
name
="targetMethod"
>
<
value
>
doMethod2
</
value
>
</
property
>
</
bean
>
<!--
可继续加新的
-->
<!--
定义调用对象和调用对象的方法结束
-->
<!--
定义触发时间
-->
<
bean
id
="doTime1"
class
="org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
="jobDetail"
>
<
ref
bean
="jobtask1"
/>
</
property
>
<!--
cron表达式 此处定义为每天零辰00:15执行任务
-->
<
property
name
="cronExpression"
>
<
value
>
0 15 00 ? * *
</
value
>
<!--
<value>10 * * ? * *</value>
-->
</
property
>
</
bean
>
<
bean
id
="doTime2"
class
="org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
="jobDetail"
>
<
ref
bean
="jobtask2"
/>
</
property
>
<!--
cron表达式 此处定义每1分钟触发一次
-->
<
property
name
="cronExpression"
>
<
value
>
0 */1 * ? * *
</
value
>
</
property
>
</
bean
>
<
bean
id
="doTime3"
class
="org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
="jobDetail"
>
<
ref
bean
="jobtask3"
/>
</
property
>
<!--
cron表达式 此处定义每天上午10:30和晚上22:20触发 即每半天触发一次
-->
<
property
name
="cronExpression"
>
<
value
>
0 30,20 10,22 ? * *
</
value
>
<!--
<value>10 * * ? * *</value>
-->
</
property
>
</
bean
>
<!--
可继续加新的
-->
<!--
定义触发时间结束
-->
<!--
总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序
-->
<
bean
id
="start_common"
lazy-init
="false"
autowire
="no"
class
="org.springframework.scheduling.quartz.SchedulerFactoryBean"
>
<
property
name
="triggers"
>
<
list
>
<
ref
bean
="doTime1"
/>
<
ref
bean
="doTime2"
/>
<!--
可继续加新的
-->
</
list
>
</
property
>
</
bean
>
<!--
总管理类结束
-->
</
beans
>
下面是一个调度器的入口(多线程)
package
com.quartz.job;
/** */
/**
* 任务调度的其中一个入口
* 这个入口类需要这Spring配置文件contextApplication.xml中定义
* 这个入口类可以定义一个或多个
* 该类里的方法,将会有单独的线程来运行
*
@author
Administrator
*
*/
public
class
DoJobMethod
{
public
void
doMethod1()
{
System.out.println(
"
我是任务调度的第一个方法
"
);
}
public
void
doMethod2()
{
System.out.println(
"
我是任务调度的第二个方法
"
);
}
}
后话就不用多说了,要这web.xml里配置启动加载spring配置文件
<?
xml version="1.0" encoding="UTF-8"
?>
<
web-app
version
="2.4"
xmlns
="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
<
listener
>
<
listener-class
>
org.springframework.web.context.ContextLoaderListener
</
listener-class
>
</
listener
>
<
context-param
>
<
param-name
>
contextConfigLocation
</
param-name
>
<
param-value
>
/WEB-INF/applicationContext.xml
</
param-value
>
</
context-param
>
</
web-app
>
这里要说一个小事,我们经常在这里定义的触发器条件都是比较有规律的,如果你想做到在容器初始化时候调用一下这个任务,就需要一个过滤器来监听容器,用以初始化。也问了前辈,好像还没有什么更好的办法,如果你有的话,希望不惜赐教
PS:刚想到一个办法,在spring容器初始化这个jobbean时候,指定一个init-method。在这个方法里调用其他的任务方法,这样可以简单解决容器初始化时候做任务
1. 指定init-method
<!--
要调用的工作类
-->
<
bean
id
="quartzJob_common"
class
="com.quartz.job.DoJobMethod"
init-method
="doMethod"
></
bean
>
2. 这init-method里调用任务方法
public
class
DoJobMethod
{
public
void
doMethod()
{
doMethod1();
doMethod2();
}
public
void
doMethod1()
{
System.out.println(
"
我是任务调度的第一个方法
"
);
}
public
void
doMethod2()
{
System.out.println(
"
我是任务调度的第二个方法
"
);
}
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
Quartz cron 表达式格式的含义
Spring AOP详细导读-用多手段实例对比呈现AOP
Quartz 与 Spring 集成使用的实例
Spring Quartz 任务调度存储信息(三)
Spring Quartz Trigger 和表达式(二)
Spring Quartz 框架结构概述(一)
Spring IOC/DI/注解-理论与实例并存
java 组件式的任务调度---Quartz
在java中利用JDK自带的TimerTask实现定时任务
Powered by:
BlogJava
Copyright © Gavin.lee
日历
<
2025年1月
>
日
一
二
三
四
五
六
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(13)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
随笔档案
(19)
2011年6月 (1)
2011年5月 (1)
2010年12月 (1)
2010年5月 (1)
2010年1月 (1)
2009年8月 (2)
2009年6月 (6)
2009年5月 (6)
文章分类
(277)
Date tools(4)
FreeMarker (7)
java design pattern(3)
java SE & EE(60)
JDBC(14)
jsp 【勿忘】(5)
Linux command(7)
Linux shell 入门(11)
Linux 日常应用(5)
Log && File Operate(8)
MemCache (5)
SiteMesh 页面装饰组件(2)
SSH2 --Hibernate(6)
SSH2 --Spring(9)
SSH2 --Struts2(21)
Subversion(Svn)(5)
wap 积累(8)
web 积累(前端 + 后台)(33)
xml doc 操作(12)
多线程(6)
性能分析(7)
类的设计(4)
经典语录(3)
经验&常识(32)
文章档案
(282)
2011年7月 (1)
2011年6月 (1)
2011年5月 (1)
2011年4月 (1)
2011年3月 (1)
2011年2月 (1)
2010年12月 (6)
2010年11月 (8)
2010年10月 (1)
2010年9月 (6)
2010年6月 (7)
2010年5月 (22)
2010年4月 (1)
2010年3月 (14)
2010年2月 (2)
2010年1月 (10)
2009年12月 (32)
2009年11月 (30)
2009年10月 (2)
2009年9月 (5)
2009年8月 (13)
2009年7月 (41)
2009年6月 (43)
2009年5月 (33)
收藏夹
(7)
java 基础类(1)
JSP(1)
server(2)
WEB(1)
数据库
设计模式(2)
友情链接
blogjava中的强人
chinaunix 社区
java 世纪网
java 基础辅导文章
javaeye 蓝色的风
SQL语句教程
与java共舞
中国协议分析网
中文java技术网
多线程
待看的文章
感兴趣的 csdn
我的漫漫程序之旅
新起点,新开始
梦幻之旅
赵学庆 的博客
超级多文章的牛人
隔叶黄莺 The Blog of Unmi
高手论坛
最新随笔
1. Mysql:1292 truncated incorrect double value -- concat 函数用法
2. Mysql 插入当前时间【摘】
3. 学计算机的你伤不起啊【雷人】
4. ucweb和opera工作原理的差别【摘】
5. 清朝皇帝列表
6. 设置IE查看源文件时默认打开的编辑器【转】
7. subclipse svn修改用户名密码问题【摘】
8. hibernate.dialect (Hibernate SQL方言)-备用
9. Tomcat JspFactory的异常的原因及解决办法
10. 关于MyEclipse中的Tomcat启动的问题 【Tomcat JDK name error】
11. win-xp 自动关机脚本 【古老的记忆】
12. Office 2007 Word 打开故障 - "The setup controller has encountered a problem during instll"
13. 木匠家的门
14. MyEclipse 后台进程一直运行"computing additional info"的解决办法
15. MyEclipse 一直 initializing java tooling······
16. MyEclipse 代码提示(“@”自动提示)
17. org.hibernate.hql.ast.QuerySyntaxException(我的流水账)
18. org.hibernate.hql.antlr.HqlBaseParser.recover(NoSuchMethodError)
19. SVN:cannot map the project with svn provider解决办法
20. WAP1.0 前端开发经验(原创-JSP)
21. Notepad++提示"Load langs.xml failed!"的解决方法
22. 让你的PC也能访问手机腾讯网
23. 【转】Proxool 连接池的配置-hibernate篇
24. Hibernate 主键生成策略
25. Quartz cron 表达式格式的含义
26. OGNL功用!!!
27. 使用Appfuse快速构建J2EE应用
28. 大型门户网站的十四大技术!!!
29. Urlrewrite与Struts2.x结合使用
30. HttpWatch的检测指示说明:Blocked、Connect、Send、Wait、Receive
31. 解读JAR,SIS,SISX格式区别!!!
32. commons-lang-2.4.jar 包常用方法集锦
33. Struts2中解决一个表单多种提交
34. JSTL(Java Standard Tag Library) 标记库的使用
35. Struts2验证错误信息的两个经典方法-addFieldError&addActionError
36. Hibernate常见异常-无法转换为内部表示
37. Spring AOP详细导读-用多手段实例对比呈现AOP
38. Struts2 Result-type(封装Action层到View层的跳转逻辑)
39. 在Struts2中以IOC和非IOC方式获取session&request
40. 采用url链接形式提交action(非s:from方式提交)
搜索
积分与排名
积分 - 354559
排名 - 156
最新评论
1. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError
S2C4
--asdad
2. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError[未登录]
asd
--as
3. 21232.2323
323432432
--冯海波
4. re: SVN:cannot map the project with svn provider解决办法[未登录]
多谢!已经解决。
--will
5. re: Struts2验证错误信息的两个经典方法-addFieldError&addActionError
44
--2
阅读排行榜
1. 学计算机的你伤不起啊【雷人】(1013)
2. 看看这个笑话,你就知道干IT的不容易了!!(620)
3. 清朝皇帝列表(611)
4. 每天读一遍,不久你就会变! ---- 很好很强大(466)
5. 木匠家的门(417)
评论排行榜
1. 学计算机的你伤不起啊【雷人】(0)
2. 清朝皇帝列表(0)
3. 木匠家的门(0)
4. 每天读一遍,不久你就会变! ---- 很好很强大(0)
5. 我喜欢的语录(0)