问题大概情况:
现在有一个Scheduled定时任务,每一个小时执行一次统计一张表里的数据。
在本地启动测试都没有问题,但是一部署到服务器上,定时任务就会被执行两次,导致数据库中每次入库的数据都会重复。
因为之前遇到过一次这样的情况,是因为起了两次服务。
类似于这样:
这种情况只需要杀死其中的一个进程就行了。(可以先看一下自己的是不是这种情况)
可是这次出现的问题,不是这样的,而是确确实实的是一个进程执行了两次定时任务。
参考了网上的一些资料后了解到,是因为项目部署在服务器tomcat的webapps目录里,导致项目被tomcat初始化了2次,部署成功了2次,这个现象归根到底问题出在tomcat的service.xml的配置上。
找到Tomcat/conf/server.xml找到第148行:
是这样的
配置Tomcat启动项目路径为外部路径,修改这两个地方:
最后重启Tomcat
*************************************************** 更新 ******************************************************
问题并没有解决,定时任务还是会执行两次。但是数据库中入库的有时候是一条,有时是两条。
原因就是同一个任务执行的先后顺序。两个任务一起执行的话就会同时入库两条,但是一前一后执行的话就是一条。还得再想其他的解决办法。