spring 定时任务执行两次的异常排查处理
参考文章:http://nkliuliu.iteye.com/blog/816335
1.问题描述:
一 个 tomcat 下 部 署 了 两 个 应 用 , 一 个 是 普 通 web 应 用 syncc , 另 一 个 应 用
syncc_wx 属于微信公众号后台程序涉及消息定时推送, tomcat 未分离之前消息推送正
常,若将 syncc_wx 应用分离部署到另外一个 tomcat 后消息推送功能表现异常:利用消
息模板推送消息给公众号关注用户时,每次用户会收到两条重复的数据(即一条消息推送
了两次)。
2.问题分析:
先分析未分离前的正常情况,tomcat 的 server.xml 中配置的默认项目是 syncc 不
涉及定时任务,再看分离后 tomcat 的 server.xml 中配置的默认项目是 syncc_wx 涉及
到定时任务。结合“参考文档”大概找到了问题原因,如下描述:
“web 应用程序默认都是放在 webapps 这个目录下的,如果不把“webapps“去掉,
这里会调用一次 quartz 的任务调度,在接下来的“ <Context path”中又会调用一次
quartz 的任务调度,所以就重复了 2 次。”
3.解决方法:
修改 tomcat 配置文件 apache-tomcat-syncc-wx/conf/server.xml。
1) 首 先 将 <Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">中 appBase="webapps"设置
为空即 appBase="";
2) 最 后 值 修 改 docBase 值 为 “ /home/app/apache-tomcat-wx/
webapps/syncc_wx”如下图所示:
注意:
docBase 值 要 写 具 体 路 径 “ /home/app/apache-tomcat-wx/webapps/
syncc_wx”否则会报如下错:
评论1