Tomcat增加Context配置导致启动的时候项目加载两次问题解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat增加Context配置导致启动的时候项目加载两次问题解决方案相关的知识,希望对你有一定的参考价值。

1. 出现场景

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 "%r" %s %b" />

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

      </Host>

  

2. 问题原因

虚拟目录引起的问题,我们在Host标签里配置了appBase="webapps",tomcat加载一次应用。在里配置了一次docBase,tomcat又去加载一次应用。

3. 解决办法

将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 "%r" %s %b" />

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

      </Host>

  说明:如果你的项目中的链接或者图片写的都是绝对路径的话,那么带有项目名称的绝对路径是不可以使用的。

eclipse发布web应用至tomcat,默认方式下访问该项目是需要带项目名称的,例http://localhost:8080/myapp/
现在需要改成这样访问http://localhost
修改tomcat的server.xml文件,增加如下配置<Context path="" docBase="myapp" reloadable="false"/>,修改后host部分如下:





以上是关于Tomcat增加Context配置导致启动的时候项目加载两次问题解决方案的主要内容,如果未能解决你的问题,请参考以下文章

解决Tomcat增加Context导致第一次无法启动tomcat,第二次才能成功启动

tomcat下部署项目的流程和遇到的问题笔记

Tomcat启动时项目重复加载的问题

Tomcat主要配置项-部署相关

Tomcat启动时项目重复加载,导致资源初始化两次的问题

Maven增加Tomcat运行内存