-
spring集成quartz在执行任务时报错20
配置以及服务启动时都没有问题,但是在执行时发生异常
我设置的是每分钟执行一次,所以下面这个错误就会每分钟出现一次Exception in thread "DefaultQuartzScheduler_Worker-0" java.lang.NoSuchMethodError: org.springframework.beans.MutablePropertyValues.addPropertyValues(Ljava/util/Map;)V at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:59) at org.quartz.core.JobRunShell.run(JobRunShell.java:203) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
我的tomcata版本5.0,java1.4
查了一天了查不出来,更新过spring.jar的版本,也使用java1.5重新编译过,都解决不掉。
web.xml配置如下<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
applicationContext.xml的配置如下<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name="taskJob" class="com.mdcl.smap.test.TaskJob" /> <bean id="methodInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="taskJob" /> </property> <property name="targetMethod"> <value>SayHello</value> </property> </bean> <!-- 配置触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 这里不可以直接在属性jobDetail中引用taskJob,因为他要求的是一个jobDetail类型的对象,所以我们得通过MethodInvokingJobDetailFactoryBean来转一下 --> <property name="jobDetail"> <ref bean="methodInvokingJobDetail" /> </property> <!-- 每天的8点到21点每隔1分钟触发,具体说明见附录 --> <property name="cronExpression"> <value>0 * 18-22 * * ?</value> </property> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 添加触发器 --> <property name="triggers"> <list> <ref local="cronTrigger" /> </list> </property> </bean> </beans>
java类如下public class TaskJob { public static Logger log = Logger .getLogger(TaskJob.class); public void SayHello() { // TODO Auto-generated method stub try { log.info("处理任务开始>........"); // 业务逻辑代码调用 System.out.println("时间[" + new java.util.Date().toLocaleString() + "]----->大家好啊!"); log.info("处理任务结束!"); } catch (Exception e) { log.error("处理任务出现异常", e); } } }
=========================
还请各位指教,谢谢
另外发现一个奇怪的问题,通过tomcat加载applicationContext.xml的时候会报以上的错误,如果通过如下main函数来加载,程序则可以正常执行了,请大家分析一下。/** * UserInfoManager.java * * **/ package com.mdcl.smap.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApp { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("加载spring配置文件...."); ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println("加载配置文件完毕!"); // ApplicationContext context2 = new ClassPathXmlApplicationContext("test/timerTask/quartzTimer.xml"); } }
执行结果:加载spring配置文件.... 加载配置文件完毕! 时间[2008-6-19 20:31:00]----->大家好啊!
2008年6月19日 20:13
4个答案 按时间排序 按投票排序
-
我的环境:
jdk1.5.0_11
apache-tomcat-5.5.20
spring-framework-2.5-with-dependencies
Eclipse-3.2
处理任务开始>........ 时间[2008-6-19 23:51:04]----->大家好啊! 处理任务结束! 处理任务开始>........ 时间[2008-6-19 23:52:00]----->大家好啊! 处理任务结束! 处理任务开始>........ 时间[2008-6-19 23:53:00]----->大家好啊! 处理任务结束!
执行没有任何问题。2008年6月19日 23:55
-
public void SayHello() 不是Java的约定写法。改成sayHello试试。以前我遇到郭类似问题,是因为不规范的方法名写法导致问题。
2008年6月19日 21:50
相关推荐
在实际开发中,还可以考虑使用Spring Boot,它提供了更简洁的自动化配置,使得集成Quartz变得更加方便。通过在Spring Boot的application.properties或application.yml中添加相应的配置项,可以轻松地启用Quartz并...
总结来说,Quartz是Java中强大的定时任务库,通过它我们可以方便地创建和管理复杂的任务调度,包括但不限于在特定时间点执行任务、按固定间隔重复执行、甚至在满足特定条件时触发任务。相比`java.util.Timer`,...
首先,集成Quartz到Spring项目中,我们需要在项目的`pom.xml`或`build.gradle`文件中添加Quartz和Spring的相关依赖。对于Spring 3.2.3,确保引入了如下的Maven依赖: ```xml <groupId>org.springframework ...
总结起来,Spring动态定时调度任务通过结合Quartz和Spring的集成,实现了任务执行时间的灵活性。用户可以根据需求动态地调整任务的触发时间和频率,而无需修改代码或重启服务。这大大提高了系统的可扩展性和适应性,...
在任务调度场景中,Spring Boot可以集成Quartz这一强大的调度框架,使得任务的调度变得更加灵活和高效。 Quartz是一个功能丰富的开源作业调度库,它能够集成到几乎任何Java应用程序中,从简单的单个应用程序到大型...
在Java应用程序中,Quartz常被用来执行后台的周期性任务,比如数据同步、日志清理等。Struts2是一个流行的MVC(Model-View-Controller)框架,用于构建企业级Web应用程序。而Spring则是一个全面的企业应用开发框架,...
在企业级应用开发中,Spring 框架通常作为应用程序的核心容器,而 Quartz 则用于处理定时任务。Spring 提供了与 Quartz 集成的支持,使得配置和管理 Quartz 成为一种非常简单的过程。 ##### 1. ...
它集成了大量常用的第三方库配置,如JDBC、MongoDB、JPA、RabbitMQ、Quartz等,使得开发者能够“零配置”地启动项目。在本示例中,“eclipse mar创建的简单的Spring Boot例子”是使用Eclipse IDE的Maven(MAR)插件...
在Spring Boot应用中整合Quartz作为任务调度框架是常见的需求,用于执行周期性的后台任务。然而,在实际操作中,可能会遇到一些错误,如"ObjectAlreadyExistsException",这通常是由于Quartz在尝试创建已存在的Job时...
Hibernate在执行数据库批处理更新时出现SQL语法错误,可能是由于数据库表不存在或结构不符导致的。检查数据库中的表是否存在,以及表结构是否与Hibernate映射文件(*.hbn.xml)中定义的一致。确保表名和字段名在...
同时,Spring Boot也集成了大量常用的第三方库配置,如Redis、MongoDB、JPA、RabbitMQ、Quartz等,Spring Boot应用中这些第三方库几乎可以零配置进行开箱即用。 Mybaits-Plus简介 Mybaits-Plus是一个MyBatis的增强...
同时,可以扩展其他功能,如安全控制(Spring Security)、任务调度(Quartz)等。 理解并熟练掌握SSM框架的整合,对提升Java Web开发效率和项目质量具有重要意义。通过实践这个示例项目,开发者能够深入学习每个...
它集成了大量常用的第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,使得开发者能够快速地构建一个独立的、生产级别的基于 Spring 的应用程序。 **1. Spring Boot 与 JPA 的结合** Spring Boot 提供了...
Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。 > zheng-admin 基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`...