前言
最近新冠疫情严重,单位做了个探温健康的系统,功能中有涉及到定时任务进行微信的推送,本地开发后正常,但放到服务器的时候 却出问题了,一直出现重复执行
问题原因:
问题其实还是由于tomcat在服务器上被执行两次的问题,仔细观察发现webapps目录下除了解压出的war包名称的文件夹之外,还有一个ROOT文件夹,内容与war包的文件名一样。
解决方式:
原来默认<Host>的autoDeploy="true"会部署一次服务, <Context docBase="/***/***" path="" /> 又会部署一次,导致tomcat容器两次加载项目,tomcat容器存在两个bean,每个bean都去执行定时任务,所以造成任务重复执行问题
所以,将autoDeploy="true",改为autoDeploy="false";
并且在后面加上deployOnStartup="false"
然后把项目war包解压后那个删除掉
再重新运行项目,会看到webapps目录下,只有ROOT了,问题解决