最近做的一个项目很简单,SSH的组合,所有的配置都用了最简单的配置,比如dataSource、sessionFactory等,需要开发一个定时发送邮件提醒的功能,使用Quartz小菜一碟。
但问题来了,测试时报错:org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table 'chem.qrtz_locks' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'chem.qrtz_locks' doesn't exist]
在论坛里搜索了一下。
有人说:
引用
因为这个时候你的quartz是jobstore用的HDBCJobStore模式,此时会从数据库查询任务。
你如果只是测试的话,可以在你的classpath下加一个文件quartz.properties,并且加上一句org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 。就会采取内存存储的模式了。
但是我查看了Quartz包中的默认quartz.properties文件,org.quartz.jobStore.class的属性已经是org.quartz.simpl.RAMJobStore,除非你要改成HDBCJobStore的模式才需要重新设置。
还有人说:
引用
另外可能是自动装配惹得祸,存在dataSource这个bean就自动用数据库的状态维持了。
这句话讲到了点子上。我在配置文件中为了注入的方便都使用了default-autowire="byName" ,而Quartz在启动时如果发现了"dataSource"会自动注入变成HDBCJobStore的模式,那么我删掉Quartz配置文件<beans />中的default-autowire="byName"。果然程序顺利运行,Quartz也能正常定时启动。
但是这样Quartz配置文件中的注入关系都要明文手动注入了,小的项目到无所谓,大点的项目就麻烦了。何不在"dataSource"的名称上做文章呢?
于是将"dataSource"改成"myDataSource",Quartz配置文件<beans />中依然使用 default-autowire="byName"。OK!程序正常启动,Quartz正确定时启动,而且autowire="byName"也能自动的注入。
分享到:
相关推荐
-- 调用频率设置 每天上午2点和下午5点 cron表达式 --> <bean id="runTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="runSyn" /> ...
quartz scheduler getting started 的翻译
Quartz 的Cron时间设置
<bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <ref bean="myJobTrigger" /> ...
Quartz在Spring中动态设置cronExpression
spring mvc quartz 动态设置时间,可以实现任务调度的暂停和重启,在页面实现一个功能,可以动态设置调度的表达式,可以开启暂停任务调度
org.quartz.scheduler.instanceName = DefaultQuartzScheduler #集群模式 #org.quartz.scheduler.instanceId = AUTO org.quartz.scheduler.rmi.export = false org.quartz.scheduler.rmi.proxy = false org.quartz....
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <ref bean="getPolicyTime"/> </beans>
Quartz在Spring中动态设置cronExpression.docx 相当不错的资料 小而全面
Spring Quartz如何动态配置时间
关于spring中quartz的配置
动态设置定时器,支持spring+quartz多版本包含代码表结构创建
文件里面包括 1:Quartz开发指南.pdf 2:Quartz从入门到进阶.pdf 3:QuartzBeginnerExample一个附带的工程例子 4:quartz-1.6.1.zip Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它...
quartz quartz-1.8.6 dbTables quartz动态任务调度需要的数据库脚本。
赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...
postgres quatrz初始化sql脚本文件、pg、quartz、qrtz_开头的表 配置文件需求修改 #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate org.quartz.jobStore....
quartz简单实例quartz简单实例quartz简单实例quartz简单实例
该压缩包内包含两个quartz的jar包, 分别是quartz-1.6.0.jar和quartz-all-1.6.0.jar