Quartz无故报错

我们是小公司新组建的一个开发团队,公司从我们开始从零做起。所以大家在项目的开发过程中有时候会遇到一些莫敏其妙的问题,搞得大家十分头痛.......-_-!

有的问题我们经过些时日也能解决,但有的问题我们至今不解决,类似这个《Quartz无故报错》。我们的问题积累了有一些,但一直没有记录一下。

So.....今天来写一篇。希望有遇到类似问题的朋友能帮我们解决问题,或是与我们分享经验。

 

项目中要用到任务调度的地方比较多。我们选择的是使用Quartz来解决这个问题。刚开始项目规模比较小,任务调度只有几个的时候是没有发生过什么异常。但随着后面项目规模的扩大与定时器的增加,在项目启动的时候抛出了一个莫名其妙问题。

Could not invoke method 'myMethod' on target object [xxx.xxx.QuartzXXX@3f4ve3] java.lang.ExceptionInInitializerError

QuartzXXX是ref的bean。

    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="quartzXXX"/>
        <property name="targetMethod" value="myMethod"/>
    </bean>

 

myMethod方法在QuartzXXX中是肯定存在的,并且只要服务器重启就没问题了。-_-!

 

有想过是什么spring的bean加载顺序问题,调整配置文件的加载顺序让Quartz最后加载也没效果。

找了很多资料都没有找到相应的解决方法。然后这个问题就这样已重启服务器的方式解决了。

 

后面有一天看到robbin写的一篇文章《应该如何正确使用Quartz》虽然没有指出我们的问题解决办法但是我们决定更改我们的定时器。

由于项目中已经使用了webservice所以就打算用webservice的方式。通过一个Quartz服务器来调用webservice来实现任务的调度。

这样的做法确实完全避免了我们之前的错误,并且给我们的开发带来了不少的方便,大家不用每台机器都开启一个定时器在那边跑了(跑一下HQL一大堆,很烦人。),只要在QuartzServer登记一下IP就行了。

置于为什么会报Could not invoke method 这个错误,还是不懂发生的原因在哪里,换成现在的解决方案也没在追究这个问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值