`
foolzhu
  • 浏览: 14849 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring的quartz定时器重复执行二次的问题解决

阅读更多
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此。
打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程。
研究下来发现quartz确实会加载两次:
第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。
第二次:Spring本身会加载applicationContext.xml一次。
而我的quartz配置就是写在applicationContext.xml文件里的。

解决办法很简单
先把quartz配置信息提取出来,单独存成一个文件,比如applicationContext-quartz.xml
然后修改web.xml,让web容器启动时,可以加载该文件

这样quartz只会在web容器启动时加载一次,Spring不会再加载了。
分享到:
评论
3 楼 huang_yong 2012-09-28  
我们是这样解决这个问题的:

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml,classpath:spring-job.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
2 楼 除了你无可取代 2012-05-29  
  确实是这个问题 谢谢了。
1 楼 zl0828 2011-12-15  
web配置怎么用的,就差这一步了

相关推荐

Global site tag (gtag.js) - Google Analytics