spring quartz强制使用RAMJobStore解决办法

spring quartz强制使用RAMJobStore
作者:sunshy 日期:2009-08-13

在 spring里用quartz时,因为quartz调用的是一个业务层的操作,配置文件里有个datesource,这样以来spring默认会给 quartz装载datesource,即quartz被设成了JDBCJobStore模式,这样就出问题了,一方面我需要在数据库中增加十来张表,另一方面当我们的任务不能被序列化的时候,存储数据库的时候会报错!

你说简简单单的RAMJobStore多好,当然如果你的调动任务比较复杂的时候用JDBCJobStore来持久维持状态也有可取之处,这里不讨论RAMJobStore和JDBCJobStore的区别,如感兴趣可看这篇文章。这里我要讨论的就是怎么干掉JDBCJobStore模式。

首先一个尝试,在spring配置中的SchedulerFactoryBean设置:

<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">1</prop>
<!--<prop key="org.quartz.threadPool.threadPriority">4</prop>-->
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>

测试好像没起作用,经查,发现时spring自动装载在作祟。这里有一篇介绍的文章。我是在spring配置最外层加了default-autowire="byName"属性,当然这个是有用的,因为我类中都用了@autowire自动装载,这个地方不能改。所以只能在SchedulerFactoryBean这个bean里改,这样既不影响全局,也实现了quartz强制使用 RAMJobStore的需求:

<bean id="cmsScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
<ref bean="simplePublishJobTrigger"/>
<ref bean="cronPublishJobTrigger"/>
</list>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">1</prop>
<!--<prop key="org.quartz.threadPool.threadPriority">4</prop>-->
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值