TOMCAT加載兩次war包(重復加載)


一、問題描述
  項目中通過配置Context節點docBase,使docBase指向項目的絕對路徑,可以直接通過IP加端口訪問,今日發現意外bug,項目中某個功能奇數次執行成功,偶數次執行失敗。
二、問題排查
  這種現象應該是兩次使用的為不同的對象,通過debug確認問題。但是本來是單例模式實現的實例,調用的時候卻不是同一個實例,經過排查發現是Tomcat加載war包兩次導致的。
三、解決辦法
  修改Tomcat的/conf/server.xml文件
  1、將Host標簽中的appBase置為空,在webapps同級目錄創建app目錄,將war放入,Context的docBase指向這個絕對路徑,注意別放在webapps下,如下配置:

      <Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="true">
	     <!-- 這里我的war包是web.war -->		
	    <Context docBase="/home/opt/apache-tomcat-8.0.35-web/app/web" path="" reloadable="true"></Context>
		
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
	  
      </Host>

  2、在HOST標簽中deployIgnore=".*web.*",其他不做修改。

<HOST deployIgnore=".*web.*">
 <Context docBase="/home/opt/apache-tomcat-8.0.35-web/webapps/web" path="" reloadable="true"></Context>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM