1. 程式人生 > >Tomcat啟動載入兩次專案

Tomcat啟動載入兩次專案

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 &quot;%r&quot; %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"/>