Spring @Scheduled 執行兩次 問題總結
阿新 • • 發佈:2019-01-07
參考: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中配置了一次,註解又配置了一次,相當於建立了兩個例項,那麼就會出現執行兩次的情況;
<Context > 和<Host>節點如何配置的,如果多個context配置的同一個工程,那麼tomcat就會載入兩次該工程,任務執行兩次也就是正常的了;
3如何部署的專案
是否打包war放入了webapps下 又設定了server.xml裡的context指定了該war包