在使用spring的定时任务时,定时任务被多次执行。
有一下这几种情况:
1.代码错误
2.业务逻辑错误
3.spring的多次加载
4.tomcat配置导致容器被初始化两次
解决问题
1.本项目全部使用注解,不存在多次配置,spring加载多次的问题
2.本地Idea测试,只执行一次,所以无代码和业务逻辑错误
定位到问题是tomcat
tomcat配置导致容器被初始化两次
由于app直接放在tomcat的webapp下,并且通过根路径访问,配置如下
最初的配置信息查找类似问题处理方式:
方法1:不配置根路径访问(最为简单粗暴)
不配置根路径访问方法2:将路径已出webapp目录,在docBase中指定路径(可以是相对于webapp的路径,或者绝对路径)
方法3:替换ROOT目录
方法4:在conf/Catalina/localhost生成ROOT.xml,并加入如下内容:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="xxx" path="" reloadable="true" />
实际上方法四是方法一的变种;
网友评论