最近遇見了一個很搞得事情,在tomcat下啟動項目時自己寫的定時程序被執行了兩次,導致程序啟動了兩個線程,使定時任務在幾秒間隔內執行了兩次,后來通過日志查到,原來是tomcat將項目啟動了兩次,為什么呢?我的問題原因是由於tomcat下配置的問題;為了讓程序可以通過域名直接訪問,而不用輸入項目名,所有要對tomcat配置項目的映射,由於客戶那里配置的有問題所有導致程序啟動兩次。
錯誤配置:
<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里的項目,導致項目又加載一次,所以會導致項目重復加載,定時程序會在幾秒之內重復執行,后來改了一下配置好了,
如下正確配置:
<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>