项目中有定时任务执行两次,导致生成数据相隔几秒但是是重复的。
查看逻辑代码没问题,以及在本地运行没问题。跑到服务器发布后就出现该问题。
解决:
服务器上tomcat的配置文件server.xml有问题,可以自行搜索“tomcat appbase与docbase”。
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="false">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="项目包名称" path="" reloadable="false" ></Context>
</Host>
上面这种配置项目会启动两遍,所以修改appBase默认,docBase写绝对路径 我们先看appBase,这个目录表示: 1 这个目录下面的子目录将自动被部署为应用。 2 这个目录下面的.war文件将被自动解压缩并部署为应用 而docBase只是指向了你某个应用的目录,这个可以和appBase没有任何关系。
总结:
如果你想自己指定路径,那么应该在docBase里面
如果你想简单,那么直接把他们复制到appBase下面就行了
如果你把他们弄重复了,也就是2个指向了一个目录,看上去也能运行,但你的应用下面的每个子目录,其实是被部署为单独的应用的。
注意:如果appbase为空,docbase里面的路径要写全。
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="false">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context docBase="/xxx/xxx/xx/项目包名称" path="" reloadable="false" ></Context>
</Host>