Tomcat appBase[通俗易懂]
<Host name=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”>
<Contextpath=”project_name”docBase=”/usr/local/project_name”debug=”0″reloadable=”true”crossContext=”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” />
</Host>
現在我們來討論下:tomcat 中server.xml文件: Host中 appBase 屬性和 context中docBase屬性的一些工作原理
1、如果你在Host 中的 appBase目錄下配置了 如 appBase –對應的是工程的目錄
1.1、<Hostname=”localhost”appBase=”webapps”unpackWARs=”true”autoDeploy=”true”> –這個是tomcat的默認配置
tomcat在啟動的時候就會將${tomcat_home}/webapps 目錄下的所有子目錄當成工程;如:在webapps下有子目錄project_a 和project_b 他就會tomcat解析成project_a 和project_b 兩個工程
2、如果你想tomcat啟動后加載你指定目錄的下的工程 同時你指定了工程名 如 docBase 對應的是單獨的工程
<Contextpath=”project_name”docBase=”/usr/local/project_name”debug=”0″reloadable=”true”crossContext=”true”/>
此時tomcat訪問如果你訪問 http://IP:port/project_name/就能訪問到/usr/local/project_name 下的資源了;
3、如果appBase指定了同一個目錄 同時docBase 指向了appBase指定目錄的子目錄
這時就會出現問題,tomcat會對同一個工程啟動2次
啟動過程:1、首先tomcat會對webapps下面的所有工程啟動一次 ;2、然后啟動docBase目錄下的工程,此時如果webapps下面剛好有 project_dir工程的話,就會再次被啟動
此時tomcat下就啟動了兩個一樣的工程了 project_dir 和project_name工程; 你在啟動tomcat時 在catalina.out日志文件中就會發現日志重復打印了;
appBase 和docBase以 / 開頭說明是絕對目錄;
轉載于:https://my.oschina.net/u/1414315/blog/812445
總結
以上是生活随笔為你收集整理的Tomcat appBase[通俗易懂]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go 安装 mysql 链接驱动
- 下一篇: 做SEO需要了解哪些方面的内容