spring 項目中 定時器任務執行重複執行(執行兩次)的問題

描述
應用部署到 tomcat 後,每次到定時器觸發時,同一個事件總是在統一時刻被觸發兩次。

分析
發現一個奇怪的現象,在本地調試時,按照同樣的方法配置, @Scheduled 配置的定時任務,在觸發時只會被執行一次。而部署到服務器上的 tomcat 後,就會被觸發兩次。

如果本身代碼沒有問題,懷疑跟服務器的環境有關。查看服務器上的 ${your_tomcat_path}/conf/server.xml 文件, 同時配置了 appBase=“webapps” 和 docBase=“YourApp”,而我自己的應用是放置在 webapps/YourApp 下面的。

這樣配置後,相當於在 tomcat 啓動時加載了兩個應用。所以會出現定時任務被執行兩次,而定時任務執行時,對象內的狀態是不一樣的。

解決
方案1:修改 ${your_tomcat_path}/conf/server.xml 文件,將 appBase 設置爲 appBase=“”,相當於將 appBase 設置爲空;並且將 docBase 設置爲 docBase=“webapps/YourApp”;(此方案親測有效)

方案2:修改 ${your_tomcat_path}/conf/server.xml 文件,appBase 不變,將 docBase 所在的 Contex 節點去掉。(這種方案沒有驗證,理論上是可行的)

參考鏈接:
https://blog.csdn.net/liuxuejin/article/details/9104055
https://blog.csdn.net/liuxuejin/article/details/9104055
————————————————
版權聲明:本文爲CSDN博主「ToSimpleL」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_38575051/article/details/90481722

發佈了37 篇原創文章 · 獲贊 30 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章