Tomcat裡 appBase和docBase的區別
阿新 • • 發佈:2019-01-31
<host appBase="d:/aaa">
<Context path="/smswap" reloadable="true" docBase="D:\workspace\smswap\WebRoot"></Context>
</host>
我們先看appBase,這個目錄表示:
1 這個目錄下面的子目錄將自動被部署為應用。
2 這個目錄下面的.war檔案將被自動解壓縮並部署為應用
而docBase只是指向了你某個應用的目錄,這個可以和appBase沒有任何關係。
總結:
如果你想自己指定路徑,那麼應該在docBase裡面
如果你想簡單,那麼直接把他們複製到appBase下面就行了
如果你把他們弄重複了,也就是2個指向了一個目錄,看上去也能執行,但你的應用下面的每個子目錄,其實是被部署為單獨的應用的。
比如你的應用為
myApp, 放在了
d:\project\myApp
裡面有2個子目錄
d:\project\myApp\images
d:\project\myApp\js
你可以通過
1 設定 appBase 指向 d:\project 來讓系統自動部署
2 你可以手工指定docBase到 d:\project\myApp
3 如果你指定了 appBase到 d:\project\myApp 那麼
d:\project\myApp\images這個將不再是普通的子目錄,而是一個單獨的虛擬目錄,或者叫應用了。因為其被自動部署
<Context path="/smswap" reloadable="true" docBase="D:\workspace\smswap\WebRoot"></Context>
</host>
我們先看appBase,這個目錄表示:
1 這個目錄下面的子目錄將自動被部署為應用。
2 這個目錄下面的.war檔案將被自動解壓縮並部署為應用
而docBase只是指向了你某個應用的目錄,這個可以和appBase沒有任何關係。
總結:
如果你想自己指定路徑,那麼應該在docBase裡面
如果你想簡單,那麼直接把他們複製到appBase下面就行了
如果你把他們弄重複了,也就是2個指向了一個目錄,看上去也能執行,但你的應用下面的每個子目錄,其實是被部署為單獨的應用的。
比如你的應用為
myApp, 放在了
d:\project\myApp
裡面有2個子目錄
d:\project\myApp\images
d:\project\myApp\js
你可以通過
1 設定 appBase 指向 d:\project 來讓系統自動部署
2 你可以手工指定docBase到 d:\project\myApp
3 如果你指定了 appBase到 d:\project\myApp 那麼
d:\project\myApp\images這個將不再是普通的子目錄,而是一個單獨的虛擬目錄,或者叫應用了。因為其被自動部署
d:\project\myApp\js 也一樣的後果
今天整整搞了一個下午,ubuntu下的tomcat,由於沒有深入分析過tomcat/conf/server.xml,遇到很多問題。
一開始總是把appBase配置成應用程式的路徑,結果反覆的修改別處,也沒搞定,突然想起docBase,然後在
appBase 下面加了一行docBase,把路徑配置到docBase中,把appBase為空,就OK了
<Host name="localhost" appBase=""
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/usr/local/webapp" debug="0" reloadable="true" crossContext="true"/>