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

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"就可以了。

你可能感兴趣的:(spring)