Robin's Java World
I Love Java As My Life!
BlogJava
首页
新随笔
联系
聚合
管理
随笔-103 评论-300 文章-0 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 Java World
阅读(1342)
评论(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);
回复
更多评论
新闻频道
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
成果网帮您增加网站收入
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
相关文章:
Spring Autowire(自动装载)的一次实践
IBM Pattern Modeling and Analysis Tool for Java Garbage Collector发布2.6版,支持Java 6
使用XFire开发Web Service客户端完整入门教程
WebSphere Application Server 7.0 初体验
JVM分析的两个工具(MAT&GCViewer)试用
WAS与IHS结合时如何配置SSL
纯Java通过SSH执行Linux命令
Quartz与Spring结合时如何动态更新Job的启动时间
WebSphere Portal V6.1安装手记
Apache Http Server与BEA WebLogic整合手记
<
2008年4月
>
日
一
二
三
四
五
六
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
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(15)
给我留言
查看公开留言
查看私人留言
随笔分类
(118)
DB(6)
Java(47)
OS(9)
weblogic(3)
Webshere(11)
其它(20)
心情(3)
翻译(1)
读书(6)
转载(12)
随笔档案
(97)
2008年9月 (3)
2008年8月 (4)
2008年7月 (5)
2008年5月 (2)
2008年4月 (1)
2008年3月 (3)
2008年2月 (2)
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,专注于过程改进,项目管理,质量管理三个方向。
搜索
积分与排名
积分 - 148424
排名 - 46
最新评论
1. re: XFire完整入门教程
@syzdcs
不客气。返回文件的例子是什么意思呀?能不能把你的需求说详细点?
--Robin's Java World
2. re: XFire完整入门教程
感谢,很受用.楼主能不能再加上一个返回文件的例子啊
--syzdcs
3. re: 想要个开心网的邀请,有的朋友给一个
评论内容较长,点击标题查看
--1235414
4. re: 使用XFire开发Web Service客户端完整入门教程
@无名
刚刚看了,那篇文章主要是讲服务端开发的,对于客户端的开发,我这里应该是最完整的。
--Robin's Java World
5. re: 使用XFire开发Web Service客户端完整入门教程[未登录]
评论内容较长,点击标题查看
--无名
阅读排行榜
1. Fedora Core 6硬盘安装手记(10417)
2. XFire完整入门教程(5332)
3. [译]Struts Menu开发向导(5044)
4. JBuilder2006也用CheckStyle(3734)
5. JDK1.5API完整中文版CHM格式文档发放(可下载)(3221)
评论排行榜
1. XFire完整入门教程(38)
2. JDK1.5API完整中文版CHM格式文档发放(可下载)(21)
3. Fedora Core 6硬盘安装手记(17)
4. [分享]2007年3月个人学习的积累图(13)
5. 技术总结及推荐例程和文章+学习计划,请大家提建议(10)
60天内阅读排行
1. JVM分析的两个工具(MAT&GCViewer)试用(1314)
2. WebSphere Application Server 7.0 初体验(1181)
3. 使用XFire开发Web Service客户端完整入门教程(1178)
4. RedHat下安装MySQL5.0(RPM包)手记(896)
5. WAS与IHS结合时如何配置SSL(837)