码迷,mamicode.com
首页 > 编程语言 > 详细

关于spring中使用多个quatz配置文件配置计划任务时,只有其中一个文件的任务有效的问题

时间:2015-02-20 19:46:26      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

关于spring中使用多个quatz配置文件配置计划任务时,只有其中一个文件的任务有效的问题

问题描述

工作中用到了spring与quatz来实现定时器触发一些计划任务,原本都写在一个配置文件里。后来将不同业务逻辑拆分成两个文件后,发现每次spring容器启动后,只有其中一个文件中配置的计划任务有再执行,另一个则没有。

解决方案

通过google在stackoverflow上找到了解决方案,其实原因很简单。在spring容器中配置了多个Scheduler的情况下,必须给每个Scheduler指定name与id,否则配置了单例的多个Scheduler初始化时会相互覆盖,造成只有一个Scheduler的配置有在运行。
所以要对配置文件做如下修改:

<beans>
    ......
    前面关于执行类的定义这里省略
    ......
   <!-- Scheduler配置 如果将lazy-init=‘false‘那么容器启动就会执行调度程序,如果配置了多个,必须分配id,且每个Scheduler id不同 -->
    <bean id="startQuertz" lazy-init="false" singleton="true"
          class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
          <!--name也必须设置,保证各Scheduler之间不同即可-->
        <property name="schedulerName" value="defaultScheduler"/>
        <property name="triggers">
            <list>
                <ref bean="doTime"/>
            </list>
        </property>
    </bean>

</beans>

参考资料

  1. Stackoverflow: 《Using two schedulers in one Spring context》

关于spring中使用多个quatz配置文件配置计划任务时,只有其中一个文件的任务有效的问题

标签:

原文地址:http://my.oschina.net/u/1010578/blog/379417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!