最近碰见了一个很搞得事情,在tomcat下启动项目时本身写的定时程序被执行了两次,致使程序启动了两个线程,使定时任务在几秒间隔内执行了两次,后来经过日志查到,原来是tomcat将项目启动了两次,为何呢?个人问题缘由是因为tomcat下配置的问题;为了让程序能够经过域名直接访问,而不用输入项目名,全部要对tomcat配置项目的映射,因为客户那里配置的有问题全部致使程序启动两次。web
错误配置:apache
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/apache-tomcat-6.0.29/webapps/XXX" path="" reloadable="true"></Context> <Context docBase="/usr/local/apache-tomcat-6.0.29/webapps/XXX" path="/admin" reloadable="true"></Context> </Host>
以上配置,因为host节点配置了appBase为webapps,全部tomcat会加载webapps里的全部项目,下面又配置了webapps里的项目,致使项目又加载一次,因此会致使项目重复加载,定时程序会在几秒以内重复执行,后来改了一下配置好了,tomcat
以下正确配置:app
<Host name="localhost" appBase="" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/apache-tomcat-6.0.29/webapps/XXX" path="" reloadable="true"></Context> <Context docBase="/usr/local/apache-tomcat-6.0.29/webapps/XXX" path="/admin" reloadable="true"></Context> </Host>