摘要 應用Tomcat對於我們來講實在是司空見慣了
但是對於每個使用者來講
應該了解其運轉的機制也是必不可少的
本人在維護
apache開源項目
論壇時遇到此問題
並略作研究
望與大家共討
分享
一配置自動部署時的web應用加載順序 當tomcat的server
xml中對虛擬主機(Host)配置中autoDeploy=true和unpackWARs=true時
如
server
xml
<Host name=
localhost
debug=
appBase=
webapps
unpackWARs=
true
autoDeploy=
true
xmlValidation=
false
xmlNamespaceAware=
false
>
下面的部署順序在Tomcat啟動時發生
任何具有上下文描述符(Context Descriptors)的web應用首先被部署
tomcat在$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結尾的文件
將其作為web應用的上下文描述符
並按照文件名排序逐一部署
注意作為上下文描述符的文件名可以不為web應用名
因為tomcat會讀取其中的內容來判斷
但是改變上下文描述符的文件名會使部署的順序發生變化
如
$CATALINA_HOME\conf\Catalina\localhost\devoffer
xml
<?xml version=
encoding=
utf
?><Context docBase=
E:/eclipse
RC
/workspace/devOfferProject/web
path=
/devoffer
useNaming=
false
workDir=
work\Catalina\localhost\devoffer
></Context>
上面的上下文描述符說明了devoff這個web應用的docBase和部署的path以及其工作目錄
另外
位於$CATALINA_HOME/webapps/[webappname]/META
INF/目錄中的context
xml也作為上下文描述符使用
在處理了上文所說的位於$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中的上下文描述符後
tomcat將部署這些在web應用的META
INF目錄中的context
xml
加載順序按照應用名的字母順序
沒有上下文描述符的已經被展開的web應用將按照其應用名順序逐個被部署
如果其中的一個web應用關聯著一個在appBase(一般為
$CATALINA_HOME/webapps
目錄)中的WAR文件
則當WAR文件比相對應的被展開的web應用新時
那個被展開的web應用將被刪除
tomcat將WAR文件展開並部署作為替換舊的web應用
在執行了
步後
tomcat將部署在appBase中的WAR文件
請注意
在每個應用被部署後
tomcat為沒有上下文描述符的web應用建立上下文描述符
二非自動部署配置下的應用加載順序 此時完全按照在tomcat manager中人工部署順序
三參考資源 doc/l
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28368.html