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

fjhooo 2008-07-27 05:27:12
在Spring 中使用基于Quartz的定时任务 出现了错误,请做过这方面的朋友帮帮忙
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而导致出错了呢?

谢谢所有热心回答的人
...全文
2525 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyczx 2010-03-14
  • 打赏
  • 举报
回复
??????????
fjhooo 2008-07-29
  • 打赏
  • 举报
回复
好的,谢谢那么多位的热心回答 结贴 放分吧
Landor2004 2008-07-29
  • 打赏
  • 举报
回复
ServletActionContext要在容器中用吧,这里的定时器是后台运行的脱离容器的东西

直接写D:\\xxx\\
fjhooo 2008-07-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Landor2004 的回复:]
定时任务怎么还会有ServletActionContext呢,定时任务是后台的任务,和上下文应该没有关系呀
[/Quote]

我的定时方法就是某网站下载一些文件,所以需要保存到本地的真实路径
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
定时任务怎么还会有ServletActionContext呢,定时任务是后台的任务,和上下文应该没有关系呀
fjhooo 2008-07-28
  • 打赏
  • 举报
回复
谢谢那么多位的热心回答,我找到问题所在了,当我调用了
String path = ServletActionContext.getRequest().getRealPath("/");方法的时候
就会出现异常了
不可以调用这个方法的话,那该如何获取路径啊,或者可不以在 定时执行的方法构造里面传进去呢?
Landor2004 2008-07-28
  • 打赏
  • 举报
回复
其他的没问题,确实版本问题,楼主再检查一下,看是否有重复的jar包
天外流星 2008-07-28
  • 打赏
  • 举报
回复
可能是import相同的class时导入有误,所以NoSuchMethodError
fjhooo 2008-07-28
  • 打赏
  • 举报
回复
谢谢楼上热心的回答?
可否请问一下
运行环境jdk1.6 + sping2.5 +hibernate3.2
quartz-all-1.6.0.jar + commons-collections-3.1.jar

编译级别是6.0
这。。。
难道是包加的不对么?
还请楼上的可以明示

定时的方法改成普通的输出语句也是没有问题的
老紫竹 2008-07-27
  • 打赏
  • 举报
回复
java.lang.NoSuchMethodError: org.quartz.JobExecutionException
可以肯定,你运行环境的quartz版本和你编译时的版本不一样。
你自己看看吧!嘿嘿!!

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧