1. 程式人生 > >Spring @Scheduled 執行兩次 問題總結

Spring @Scheduled 執行兩次 問題總結

參考:http://bbs.csdn.net/topics/391054322

使用 Spring @Scheduled 註解實現定時任務: 

1:servlet.xml中添加了 task名稱空間 和  XML/HTML code ?
1 <task:annotation-driven />

2:使用@Service 註解排程類,添加了@Scheduled 方法:
Java code ?
1 2 3 4 5 6 7 @Service("scheduleService") public class ScheduleService { @Scheduled
(cron="0 30 23 * * ?") public void scheduleTask(){ logger.info("execute one~~");      // <----這裡會執行兩次 } }


令人費解的是:定時任務在線上伺服器上總是執行兩次(定時更新資料的操作啊!!!!)
在本機除錯和測試機上測試都只執行一次,原因不明
注:在網上找了下原因,說的都是例項化兩次的原因,可是對比了網上說的的情形,和我當前遇到的根本不一致~~

網上搜羅了各種原因,最終發現問題在tomcat配置中;現把可能導致這種問題的情況列出來分享:

1.檢查掃描註解配置。

如果xml中配置了一次,註解又配置了一次,相當於建立了兩個例項,那麼就會出現執行兩次的情況;

2.查詢tomcat 的server.xml檔案裡的何配置

 <Context > 和<Host>節點如何配置的,如果多個context配置的同一個工程,那麼tomcat就會載入兩次該工程,任務執行兩次也就是正常的了;

3如何部署的專案

是否打包war放入了webapps下  又設定了server.xml裡的context指定了該war包