spring中定时任务执行多次问题排解

阅读: 评论:0

spring中定时任务执行多次问题排解

spring中定时任务执行多次问题排解

项目涉及到定时任务,用的spring自带的定时任务

<task:scheduler id="scheduler"/>
    <task:scheduled-tasks scheduler="scheduler"> 
      <task:scheduled ref="scheduledTaskOilQuery" method="addCollectOil" cron="0 */1 * * * ?"/> 
    </task:scheduled-tasks>

部署到服务器上,却发现定时任务执行的结果总是重复一次。刚开始以为是数据本身问题。后查看日志,定时任务每次都执行了两遍。因为执行的时间一样,除了微妙级别有差异。

这类问题,网上也有类似的解答,但不符合我的实际情况。但查找问题的方向一致:定时任务很可能被加载了两次或多次。

网上的一类问题是配置文件的疏忽导致,定时任务所在spring配置文件被加载了两次。具体原因是有些配置用了通配符配置了一次,又明确的指定了一次,或是spring容器按默认的规则加载了一次。而你的配置文件正好是默认名,默认路径。详细的可以到网上搜索。

重点说我遇到的问题。检查配置后确认不是配置文件的问题。猜想有可能是整个项目加载了两次。

一般项目文件在tomcat的webapps目录下放置,又在l中通过<context>节点配置了一次,且path名称配置的还与工程名(webapps下的)不一致,又可能因为这个项目加载了多次。

比如在webapps下工程为myweb&#l中为了简化访问路径又通过<contex path="web" docbase="myweb">配置了一次。当我们在浏览器访问时,两个路径都是可以访问的。且在工程中上下文是不一样的。

所以解决方法是,1.去掉l中的配置;2&#l中的配置path名称改成与工程一致(这也就失去了配置的意义);3:工程文件不放在webapps目录下,移到外部任何目录。l中的context节点中的docbase做相应的改动。

还有一种很隐蔽的问题会导致类似情况,甚至会出现很多并发症。当项目中有随项目启动而启动的后台任务,在tomcat关闭时本应该结束的。却由于资源的释放一直没有处理好,导致

项目结束不掉。处于一种半运行半停止的状态。多次重启tomcat就会有多个项目实例一样。出现的问题就不止是任务执行多次了。还会有其他觉得很奇怪的问题。

本文发布于:2024-01-31 23:41:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170671571332244.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:spring
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23