读书人

Quartz与Spring结合时怎么动态更新Job

发布时间: 2012-10-20 14:12:48 作者: rapoo

Quartz与Spring结合时如何动态更新Job的启动时间

转:http://www.blogjava.net/fastzch/archive/2010/04/27/189790.html

?

今天早上一朋友问我如何在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"        />                </entry>            </map>        </property>    </bean>    <bean id="CleanLogJobTrigger"        />        </property>        <property name="cronExpression">            <value>0 0 0 * * ?</value>        </property>    </bean>    <bean id="BatchJobStarting"        />            </list>        </property>    </bean>

?


网上也有一些其它的解法,但似乎比我这个都要复杂,呵呵。。。


评论: #?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

读书人网 >软件架构设计

热点推荐