quartz配置含表达式的事务以及集群上quartz配置

写一个applicationContext-quartz.xml作为spring的插入quartz管理的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">

<beans>
    <bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
        <property name="configLocation" value="classpath:quartz.properties"/>		
		<property name="triggers">
			<list>				  		 
				<ref bean="trigger1"/>
				<ref bean="trigger2"/>						 					   		  	
			</list>
		</property>		
    </bean>
    
    <bean id="jobDetail1" class="frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="simpleService"/>
        <property name="targetMethod" value="testMethod1"/>
		<property name="shouldRecover" value="true"/>
    </bean>
    <bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail1"/>
        <property name="cronExpression" value="0/5 * * ? * * *"/>
    </bean>    
  
    <bean id="jobDetail2" class="frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="simpleService"/>
        <property name="targetMethod" value="testMethod2"/>
		<property name="shouldRecover" value="true"/>
    </bean>
    <bean id="trigger2" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
        <property name="jobDetail" ref="jobDetail2"/>
        <property name="startDelay" value="1"/>
        <property name="repeatCount" value="100"/>
        <property name="repeatInterval" value="1000"/>
    </bean>
</beans>


很明显,这里jobdetail使用的是frameworkx.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
因为之前如果使用org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean会出现一系列序列化问题,这里我们直接使用几个牛人写的这2个类来覆盖使用。
quartz配置含表达式的事务以及集群上quartz配置

如果是配置集群quartz,让我们来关注下位于classpath:quartz.properties的这个配置文件。
#==============================================================  
#Configure Main Scheduler Properties  
#==============================================================   
org.quartz.scheduler.instanceName = TestScheduler1   
org.quartz.scheduler.instanceId = AUTO  

#==============================================================  
#Configure ThreadPool  
#============================================================== 
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true

#==============================================================  
#Configure JobStore  
#============================================================== 
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.maxMisfiresToHandleAtATime=10
org.quartz.jobStore.isClustered = true  
org.quartz.jobStore.clusterCheckinInterval = 20000  


具体里面很多配置的信息可以自己上网搜索,必须的也就是这几个,isClustered=true就是用来设置配置多节点集群的。使用中心数据库集群的方式需要的sql脚本就在quartz源代码包里面的doc-->dbTable里面有。
还有需要说明的是一些关于对象序列话的问题,quartz建立集群需要所有jobdetail里面的对象具有序列化能力,当然实现Serializable接口是必须的。如果里面有些你不想序列化的对象可以使用java的transient关键字来控制。例如一个spring的service:
private transient PostIndexService postIndexService;

下面放出几个例子供以后参考用。还有需要了解的基本上网上可以搜索到,包括quartz.properties里面配置quartz的插件,网上也可以搜索的到。这里我就不写了。


转载一篇不错的关于quartz的文章:
http://wordpress.huabaner.net/?p=327




你可能感兴趣的:(spring,bean,quartz,wordpress,配置管理)