最近,由于业务人员的需要,让我们后台服务器能够提供一些用户的数据,除了基础数据外,还要计算一下用户的指标,这个指标几乎是每日都在动态变化的,所以不是一个常量。于是我们后台就考虑利用每日的午夜时间,由服务器定时跑一个任务,将用户数据计算一遍。

       基于如上业务,我的想法是在项目(后台的主项目是spring mvc 的 web项目)部署到服务器后,启动一个定时任务,每日的凌晨0点执行任务计算好数据后保存到数据库中。从程序上来说的话,即在spring加载完成后启动一个任务,这个任务会在每日0点执行。

       没用多长时间这个程序就搞定了,本地的eclipse启动tomcat后也测试通过,业务正常处理。但是当我部署到公司的阿里云服务器后,发现一个问题:部署到服务器启动tomcat后,项目会加载两次,导致一前一后启动了两个任务,相差半分钟左右,这样本不会对业务产生错误的计算,但是与预期的并不一样,因此问题还是得解决。

       因为本地eclipse启动tomcat并没有出现这个问题,因此我初步判断,这个问题是由于阿里云服务器的tomcat配置出错导致的,于是仔细检查了tomcat的配置文件,果然找到了出错原因。

       出错的配置文件是tomcat7/conf/server.xml,这个文件配置的host节点出了错误导致的。

原配置(加载两次):

      <Host name="localhost"  appBase="/alidata/server/warApp/" unpackWARs="true" autoDeploy="true">
 
           <Context path="" reloadable="true" docBase="/alidata/server/warApp/codingyun"/>

      </Host>

修改后配置:

      <Host name="localhost" unpackWARs="true" autoDeploy="true">
 
           <Context path="" reloadable="true" docBase="/alidata/server/warApp/zkyj-web"/>

      </Host>

在网上查了好多资料,即时配置改成这样也依旧加载两次。原来还有一个地方必须改动!!!

请把tomcat目录下的webapps目录下的ROOT目录删掉,只有修改如上配置,以及删掉该目录后才能真正解决问题!

吃一堑长一智,如果不是做定时任务的话,我相信自己一直都不会知道这个问题的存在。

(转载本站原创文章请注明作者与出处Coding云--codingyun.com)

打赏
  • 微信
  • 支付宝

评论
来发评论吧~