quartz和spring集成的错误以及解决办法

来源:互联网 发布:it.sauronsoftware 编辑:程序博客网 时间:2024/05/16 13:45

1. 使用quartz的时候遇到错误: 
java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.orderedSet(Ljava/util/Set;)Ljava/util/Set; 
很明显是版本问题错误,要使用最新的commons-collections-3.1.jar包。同时checkstyle-all.jar包有相同的类,但是这个同名类版本是2.0的,所以必须去除checkstyle-all.jar下面的集合类。


2. 在Spring配置和Quartz集成内容时,有两点需要注意: 
(一):在<Beans>中不能够设置default-lazy-init="true",否则定时任务不触发,如果不明确指明default-lazy-init的值,默认是false。一般项目有多个spring的配置文件,只要当前配置quartz的文件不设置default-lazy-init="true"就可以了。 
(二):在<Beans>中不能够设置default-autowire="byName"的属性,必须去掉,否则后台会报table or view does not exist错误,这就是autowire自动装配引起的。表示quartz会使用数据库记录job的状态而进行维护,但是这些日志表又不存在,从而引发错误。autowire自动装配会自动调用dataSource这个bean(hibernate配置的这个bean),但是数据库中又没有相应记录job的表,这就是报这个错误的原因。一般项目有多个spring的配置文件,只要当前配置quartz的文件不设置default-autowire="byName"就可以了。

原创粉丝点击