Tomcat啟動載入兩次專案
阿新 • • 發佈:2019-02-09
Tomcat載入專案時執行兩次,這是為什麼呢?分析一下Tomcat下的server.xml配置檔案
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/> <Context docBase="jingyuan" path="/" reloadable="true"/> </Host>
分析:根據server.xml裡配置的,Tomcat首先根據<Context>的配置內容生成第一個StandardContext物件,載入一次專案。然後再根據Host/appBase的配置對webapps下面的專案生成第二個StandardContext,再載入一次專案。Tomcat針對同一專案生成兩個StandardContext的原因就是因為他們的名字不同,Tomcat認為是兩個Context,所以載入了兩次。
解決方法:
①就是直接把專案直接扔到webapps下,不要指定<Context>配置內容。
②不要把專案放入webapps目錄下,可以在tomcat下新建資料夾,設定appBase="" 為空,然後配置<Context>標籤,
<Context docBase="D:/JAVA/apache-tomcat-9.0.0.M22/mywebapps/jingyuan" path="" reloadable="true"/>