spring读书笔记----Quartz Trigger JobStore出错解决

将Quartz的JOBDetail,Trigger保持到数据库的时候发现,系统报错

Thejob(DEFAULT.jobDetail)referencedbythetriggerdoesnotexist

经过测试发现,在不使用hibernate的时候只有spring的测试环境情况下一切正常。而放到工作环境的时候就发生错误。

因此怀疑是datasource的问题。查springQuartz论坛上发现果然是这个问题。将quartz的datasource分开独立就全部解决了。其实也可以不独立将quartz的transaction也交给spring一同处理也可以的。

jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/quartz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
jdbc.username=root
jdbc.password=huawei

quartz.jdbc.driver=com.mysql.jdbc.Driver
quartz.jdbc.url=jdbc:mysql://127.0.0.1:3306/quartz?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
quartz.jdbc.username=root
quartz.jdbc.password=huawei
 

applicationContext-datasource.xml

<!-- 事务管理器配置, Hibernate单数据源事务 -->
	<bean id="defaultTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

	<!-- 另一个事务管理器, Jdbc单数据源事务 -->
	<bean id="quartzTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="quartzDataSource" />
	</bean>
 

applicationContext-quartz.xml

<bean name="quartzScheduler"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="dataSource" ref="quartzDataSource" />
		<property name="applicationContextSchedulerContextKey" value="applicationContext" />
		<property name="configLocation" value="classpath:schedule/quartz.properties" />
		<property name="autoStartup">
			<value>true</value>
		</property>

	</bean>
 

相关推荐