1、最近在自己的项目中部署定时器时发现定时器重复执行的问题,经过上网搜索,以为是spring的配置文件导致重复实例化,本人也相信网友说法,对配置文件做了各种修改和优化,最终还是无果。。。
2、继续搜索发现是因为tomcat的server.xml文件导致的,配置文件如下:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<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="test" path="/" reloadable="true" />
</Host>
3、这几行代码问题是什么?是appBase="webapps"和docBase="emall",原因是tomcat加载完appBase="webapps"之后又去加载docBase,因此造成加载两次项目的问题。
4、找到问题的根源,下面讲解决办法:
将 appBase="webapps"改成appBase="webroot",将docBase="test" 改成项目的绝对路径docBase="/app/tomcat/webapps/test" ,重启tomcat,问题解决!!
<Host name="localhost" appBase="webroot" unpackWARs="true" autoDeploy="true">
<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="/app/tomcat/webapps/test" path="/" reloadable="true" />
</Host>