Robin's Programming World
I Love Programming As My Life!
BlogJava
首页
新随笔
联系
聚合
管理
随笔-193 评论-715 文章-1 trackbacks-0
Quartz与Spring结合时如何动态更新Job的启动时间
本Blog所有内容不得随意转载,版权属于作者所有。如需转载请与作者联系(
fastzch@163.com
)。
未经许可的转载,本人保留一切法律权益。
今天早上一朋友问我如何在Spring中动态更新Quartz的启动时间,我试了一把,记录如下:
动态更新的Java类如下:
import
org.quartz.CronTrigger;
import
org.quartz.JobDetail;
import
org.quartz.Scheduler;
import
org.springframework.context.support.ClassPathXmlApplicationContext;
public
class
QuartzTest
{
ClassPathXmlApplicationContext context
=
new
ClassPathXmlApplicationContext(
"
/applicationContext.xml
"
);
private
static
String INSTANCE_NAME
=
"
DEFAULT
"
;
public
void
test()
throws
Exception
{
Scheduler sch
=
(Scheduler) context.getBean(
"
BatchJobStarting
"
);
JobDetail myJob
=
sch.getJobDetail(
"
CleanLogJob
"
, INSTANCE_NAME);
CronTrigger newTrigger
=
new
CronTrigger(
"
trig_batch
"
, INSTANCE_NAME,
"
0/3 * * * * ?
"
);
JobDetail newJob
=
(JobDetail) myJob.clone();
sch.deleteJob(
"
CleanLogJob
"
, INSTANCE_NAME);
sch.scheduleJob(newJob, newTrigger);
}
public
static
void
main(String[] args)
{
QuartzTest qt
=
new
QuartzTest();
try
{
qt.test();
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
代码写得比较简陋,主要是test()方法,大家可以根据自己的实际情况再发挥,例如,如果你是用Web方式改的话,context的获取可以直接从WebApplicationContext中获取。
applicationContext.xml的配置如下:
<
bean
id
="CleanLogJob"
class
="org.springframework.scheduling.quartz.JobDetailBean"
>
<
property
name
="jobClass"
>
<
value
>
com.***.***.biz.log.CleanLogJob
</
value
>
</
property
>
<
property
name
="jobDataAsMap"
>
<
map
>
<
entry
key
="logService"
>
<
ref
bean
="LogService"
/>
</
entry
>
</
map
>
</
property
>
</
bean
>
<
bean
id
="CleanLogJobTrigger"
class
="org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
="jobDetail"
>
<
ref
bean
="CleanLogJob"
/>
</
property
>
<
property
name
="cronExpression"
>
<
value
>
0 0 0 * * ?
</
value
>
</
property
>
</
bean
>
<
bean
id
="BatchJobStarting"
class
="org.springframework.scheduling.quartz.SchedulerFactoryBean"
>
<
property
name
="triggers"
>
<
list
>
<
ref
bean
="CleanLogJobTrigger"
/>
</
list
>
</
property
>
</
bean
>
网上也有一些其它的解法,但似乎比我这个都要复杂,呵呵。。。
posted on 2008-03-31 15:34
Robin's Programming World
阅读(5534)
评论(7)
编辑
收藏
所属分类:
Java
评论:
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-03-31 18:09 |
隔叶黄莺
仍然是要使用代码,如果使用上 Quartz 自己的一个插件就可以定时的扫描文件,运行中只要改配置保存就行。
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-03-31 21:07 |
Robin's Java World
@隔叶黄莺
原来还有这好的东东呀?有没有介绍这个插件的文档了?
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-03-31 21:13 |
Robin's Java World
@隔叶黄莺
你说的是JobInitializationPlugin这个Plugin吗?
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-03-31 22:07 |
隔叶黄莺
是的,就是这个,在 quartz.properties 可配置多久测试一下配置文件是否被修改过,有则读入新的内容,调整执行计划
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-04-01 14:33 |
Robin's Java World
@隔叶黄莺
谢谢!
不过一般的人在用Spring的时候大都采用在applicationContext中定义。
另外,不知道你有没有使用这个插件时在quartz.properties配置的实例了?
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间 2008-04-01 19:57 |
隔叶黄莺
我近来在翻译《Quartz Job Scheduling Framework》,有兴趣可以来看看
http://www.blogjava.net/Unmi/category/27619.html
现丑了。
回复
更多评论
#
re: Quartz与Spring结合时如何动态更新Job的启动时间
2008-08-04 12:24 |
Robin's Java World
有朋友发邮件问我,说如何动态的启动和停止一个Job,其实很简单。如下即可:
//得到一个Job
//删除此Job
sch.deleteJob("CleanLogJob", INSTANCE_NAME);
//启动时先创建一个Job
//然后启动此Job
sch.scheduleJob(newJob, newTrigger);
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
相关文章:
Ubuntu环境下Apache2与Tomcat集成
Spring 3 MVC and JSON example
Android Media Player 深入观察
[转]编写高效的Android代码
Android程序完全退出的三种方法
使用ANT批量编译Flex应用和模块(Use ANT to batch compiling application and modules of Flex)
Investigate getDeclaredMethod of Java Reflection
Eclipse空心J图标的含义
Memcached Study Notes
BlazeDS自定义认证与权限控制
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(49)
给我留言
查看公开留言
查看私人留言
随笔分类
(215)
.Net(1)
DB(8)
Flex & Flash(11)
Java(72)
OS(25)
RUP(1)
weblogic(3)
Webshere(16)
其它(50)
心情(2)
翻译(1)
读书(9)
转载(16)
随笔档案
(181)
2014年8月 (1)
2014年4月 (1)
2014年2月 (2)
2014年1月 (1)
2012年11月 (1)
2012年9月 (2)
2012年7月 (1)
2012年6月 (3)
2012年1月 (2)
2011年12月 (4)
2011年10月 (1)
2011年8月 (3)
2011年7月 (2)
2011年4月 (1)
2010年11月 (2)
2010年10月 (1)
2010年9月 (2)
2010年8月 (5)
2010年7月 (1)
2010年5月 (2)
2010年4月 (7)
2010年3月 (7)
2009年12月 (6)
2009年10月 (1)
2009年9月 (1)
2009年8月 (2)
2009年6月 (3)
2009年5月 (2)
2009年4月 (2)
2009年2月 (3)
2009年1月 (4)
2008年11月 (1)
2008年10月 (2)
2008年9月 (9)
2008年8月 (4)
2008年7月 (5)
2008年5月 (2)
2008年4月 (1)
2008年3月 (3)
2008年2月 (1)
2008年1月 (7)
2007年12月 (6)
2007年11月 (6)
2007年10月 (3)
2007年9月 (1)
2007年8月 (6)
2007年7月 (4)
2007年6月 (2)
2007年5月 (3)
2007年3月 (1)
2007年2月 (1)
2007年1月 (3)
2006年12月 (7)
2006年10月 (1)
2006年8月 (3)
2006年7月 (1)
2006年6月 (5)
2006年4月 (6)
2006年3月 (2)
2006年2月 (3)
2006年1月 (1)
2005年11月 (5)
相册
文章相关图片
收藏夹
other
Friend Links
Tiger's Space
Tiger的Blog,专注于过程改进,项目管理,质量管理三个方向。
zrfunds
搜索
积分与排名
积分 - 751416
排名 - 60
最新评论
1. re: XFire完整入门教程
楼主,请问你做过xfire使用spring的jdbc模板访问数据库的例子吗,急求啊?xfire和spring的结合在不访问数据库时(就像你这个例子一样)已经跑通了,但是需要使用jdbc时老出问题。谢谢
--fqjabc
2. re: 一次JQuery性能优化实战
不需要构建DOM
--bns
3. re: Spring Security 3.x 完整入门教程
@过客
尊重人是最起码的
--bns
4. re: Flex中带有三种状态CheckBox的Tree的实现
带有3种状态CheckBox的树形组件刚好用到
收了
--bns
5. re: Spring Security 3.x 完整入门教程
AntUrlPathMatcher这个类所在jar包是哪个啊,是spring-security-core-tiger这个吗?
--iechenyb
阅读排行榜
1. XFire完整入门教程(90425)
2. Spring Security 3.x 完整入门教程(59137)
3. 使用XFire开发Web Service客户端完整入门教程(52316)
4. WebSphere6.1中使用Spring报cvc-elt.1: Cannot find the declaration of element 'beans'异常的解决办法(24195)
5. 用MKVMerge GUI合并MKV文件(16666)
评论排行榜
1. XFire完整入门教程(130)
2. Spring Security 3.x 完整入门教程(67)
3. 使用XFire开发Web Service客户端完整入门教程(33)
4. VBA编程心得(24)
5. JDK1.5API完整中文版CHM格式文档发放(可下载)(22)