spring-task定时任务执行两次解决方案

时间:2022-06-22 07:48:50

之前在做项目时用到了spring-task ,但是在使用过程中发现定时任务会执行两次。今天偶然间在浏览博客时发现了解决方案,在这暂作记录,有机会进行测试,同时如果有网友使用了如下解决办法,希望也在评论中给出测试结果。

-------------------------------------------------------------------------------------------------------------------------------------

到指定时间后,任务总是执行2次的解决方案:

这是因为我们很容易在一个基于Spring的Web工程中启动2个定时线程:

第一次:web容器启动的时候,读取applicationContext.xml(或者别的Spring核心配置文件)文件时,会加载一次。


第二次:Spring本身会加载applicationContext.xml(或者别的Spring核心配置文件)一次。

 

解决方案:将你的Task的相关配置独立出来并在web.xml中通过context-param加载。而不是通过spring加载。

1) 独立出Spring-Task,如新命名一个文件名叫cms_quartz.xml

2)    在web.xml中去加载该文件:

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/cms-servlet.xml,classpath:cms-quartz.xml</param-value>
    </context-param>

Tomcat启动时项目重复加载,导致资源初始化两次的问题

http://blog.csdn.net/testcs_dn/article/details/38855641