博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
eclipse中,spring的Spring的定时任务@Scheduled执行2次
阅读量:17420 次
发布时间:2019-09-18

本文共 1138 字,大约阅读时间需要 3 分钟。

首先给出解决方案,能解决你的问题但又不感兴趣就不要继续往下阅读了:

把tomcat的conf/server.xml的  <Contex t> 的 docBase设置为  docBase="" ;

今天做的项目需要用到spring强大的定时任务@Scheduled,但是在写好定时任务的配置:

 

 

 

 

 

 

 

 

 

定时任务类:

 

执行结果:

===========定时任务业务处理逻辑========Tue Jul 31 22:55:00 CST 2018

===========定时任务业务处理逻辑========Tue Jul 31 22:55:00 CST 2018

===========定时任务业务处理逻辑========Tue Jul 31 22:55:05 CST 2018

===========定时任务业务处理逻辑========Tue Jul 31 22:55:05 CST 2018

从打印的日志可以看出,每次定时任务同时执行了两次。查看日志搜索spring-mvc.xml发现:

第105行:2018-07-31 22:32:45,795 [localhost-startStop-1] INFO  [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [spring-mvc.xml]

第178行:2018-07-31 22:32:45,795 [localhost-startStop-1] INFO  [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Loading XML bean definitions from class path resource [spring-mvc.xml]

发现spring-mvc加载了2次,那么也就是所,产生了2个定时任务的实例,所以定时任务会同时执行2次。

tomcat加载项目的时候是通过$TOMCAT_HOME/conf/server.xml来加载的。查看server.xml的<Host> 已经<context>标签发现:

 

项目的<Host> 标签appBase的webapps会加载webapps下的所有项目,到 <context>标签的docBase会继续加载一次alertSupport这个项目,这样就导致项目加载了2次。

解决方案:把tomcat的conf/server.xml的  <Contex t> 的 docBase设置为  docBase="" ;

你可能感兴趣的文章
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
查看>>
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
查看>>
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
查看>>
探索Redis设计与实现8:连接底层与表面的数据结构robj
查看>>
探索Redis设计与实现7:Redis内部数据结构详解——intset
查看>>
探索Redis设计与实现9:数据库redisDb与键过期删除策略
查看>>
探索Redis设计与实现10:Redis的事件驱动模型与命令执行过程
查看>>
分布式系统理论基础1: 一致性、2PC和3PC
查看>>
分布式系统理论基础2 :CAP
查看>>
分布式系统理论基础3: 时间、时钟和事件顺序
查看>>
分布式系统理论基础4:Paxos
查看>>
分布式系统理论基础5:选举、多数派和租约
查看>>
分布式系统理论基础6:Raft、Zab
查看>>
分布式系统理论进阶7:Paxos变种和优化
查看>>
分布式系统理论基础8:zookeeper分布式协调服务
查看>>
搞懂分布式技术1:分布式系统的一些基本概念
查看>>
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
查看>>
搞懂分布式技术3:初探分布式协调服务zookeeper
查看>>