Tomcat增加Context配置不帶項目名訪問導致啟動的時候項目加載兩次


eclipse發布web應用至tomcat,默認方式下訪問該項目是需要帶項目名稱的,例http://localhost:8080/myapp/
現在需要改成這樣訪問http://localhost
修改tomcat的server.xml文件,增加如下配置<Context path="" docBase="myapp" reloadable="false"/>,修改后host部分如下:

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="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"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

       <Context path="" docBase="myapp" reloadable="false"/>

      </Host>

此時每次啟動tomcat觀察日志都會發現應用加載了兩次,什么原因呢?

虛擬目錄引起的問題,我們在Host標簽里配置了appBase="webapps",tomcat加載一次應用。在里配置了一次docBase,tomcat又去加載一次應用。

將appBase="webapps"置為appBase="",docBase="myapp"置為docBase="webapps/myapp"。配置如下:

<Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="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"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

       <Context path="" docBase="webapps/myapp" reloadable="false"/>

      </Host>

如果你的項目中的鏈接或者圖片寫的都是絕對路徑的話,那么帶有項目名稱的絕對路徑是不可以使用的。


免責聲明!

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



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