返回列表 发帖

主题:在Spring 中使用基于Quartz的定时任务 出现了错误,请做过这方面的朋友帮帮忙

本文来自: 浪曦论坛 作者: 曾经迷网 发表于: 2008-7-27 16:58 阅读: 1392收藏
 
xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd   
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<bean id="scheduler"
  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
   <list>
    <ref local="triggerJobTester" />
   </list>
  </property>
</bean>

<!-- 描述了一个定时处理的机制 -->
<bean id="triggerJobTester"
  class="org.springframework.scheduling.quartz.SimpleTriggerBean"
  p:jobDetail-ref="jobDetailTesterTarget" p:startDelay="1000"
  p:repeatInterval="2000">
</bean>

<!-- 指定定时器要定时执行的类和方法 -->
<bean id="jobDetailTesterTarget"
  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
  p:targetObject-ref="regexMgr" p:targetMethod="updateList">
</bean>

<!-- 将session注入到hibernate实现-->
<bean id="daoSupportHibernate"
  class="org.fjh.cartoon.dao.DaoSupportHibernate3">
  <property name="sessionFactory" ref="sessionFactory" />
</bean>

<!--regexMgr的注入 -->
<bean id="regexMgr" class="org.fjh.cartoon.service.RegexService">
  <property name="daoSupport" ref="daoSupportHibernate" />
</bean>
</beans>

当定时任务的方法为简单的输入语句之类的没有问题,没有报错,可是任务方法改为Server层的方法时,就报了以下异常

>>>>>>>LOG4J<<<<<<< 0 2008-07-27 16:51:03,531 [DefaultQuartzScheduler_Worker-1] ERROR org.quartz.core.JobRunShell  - #org.quartz.core.JobRunShell.run(JobRunShell.java:211)# - Job DEFAULT.jobDetailTesterTarget threw an unhandled Exception:
java.lang.NoSuchMethodError: org.quartz.JobExecutionException.<init>(Ljava/lang/String;Ljava/lang/Exception;Z)V
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:221)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
>>>>>>>LOG4J<<<<<<< 15 2008-07-27 16:51:03,546 [DefaultQuartzScheduler_Worker-1] ERROR org.quartz.core.ErrorLogger  - #org.quartz.core.ErrorLogger.schedulerError(QuartzScheduler.java:2156)# - Job (DEFAULT.jobDetailTesterTarget threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NoSuchMethodError: org.quartz.JobExecutionException.<init>(Ljava/lang/String;Ljava/lang/Exception;Z)V]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by: java.lang.NoSuchMethodError: org.quartz.JobExecutionException.<init>(Ljava/lang/String;Ljava/lang/Exception;Z)V
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:221)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 more

我想实现,定时执行我Service层里面的一个业务逻辑方法。
单独运行Service里面的方法是没有问题的,定时的方法改成普通的输出语句也是没有问题的,已经把jar包更新到最新。
在网上找了几种的配置方法,试过了都是报上面那个异常。
很想请教一下做过这方面的前辈,这个问题是不是配置有问题呢?是不是由于regexMgr这个bean里面的类引用了其他的bean而导致出错了呢?

谢谢所有热心回答的人

[ 本帖最后由 曾经迷网 于 2008-7-27 17:02 编辑 ]
收藏 分享
 
找到问题所在
使用了Quartz定时的方法里面如果使用
ServletActionContext.getRequest().getRealPath("/")方法就抛异常。
TOP
返回列表 发帖