1. 程式人生 > >spring3.0自帶的定時任務重複執行兩次

spring3.0自帶的定時任務重複執行兩次

在做公司的專案,使用spring3.0自動的定時任務,通過如下方式配置:

<task:scheduled-tasks>
    <task:scheduled ref="taskService" method="sendMailTask" cron="0 0/30 * * * ?"/>

</task:scheduled-tasks>

本地使用tomcat和jboss部署,定時任務執行均正常,但上了linux測試及生產環境後,莫名的發現同一任務在同一時間被執行了兩次,網上也蒐集了大量資料,遇到類似問題的人也很多,逐一排查發現都是網上說的問題。最後發現專案中為了使用根目錄可以直接訪問系統,上線前在war包里加了jboss-web.xml配置檔案,配置如下,導致job重複執行的真凶就是<context-root >/</context-root>,它會使web再重新載入一次,去掉之後就可以解決job重複執行的問題了。

<!DOCTYPE jboss-web PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN" "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd">
   
<jboss-web>    
    <class-loading java2ClassLoadingCompliance="true">  
        <loader-repository>  
            com.example:archive= unique-archive-name  
            <loader-repository-config>  
                java2ParentDelegation=true  
            </loader-repository-config>  
        </loader-repository>  
    </class-loading>  
    <context-root >/</context-root>
    <virtual-host>api.********.cn</virtual-host>
    <virtual-host>192.168.1.202</virtual-host>
</jboss-web>