Tomcat5的web應(yīng)用啟動順序詳解
2024-09-06 19:01:08
供稿:網(wǎng)友
摘要:
應(yīng)用tomcat對于我們來講實在是司空見慣了,但是對于每個使用者來講,應(yīng)該了解其運轉(zhuǎn)的機制也是必不可少的,本人在維護"apache開源項目"論壇時遇到此問題,并略作研究,望與大家共討、分享。
一、配置自動部署時的web應(yīng)用加載順序:
當(dāng)tomcat的server.xml中對虛擬主機(host)配置中autodeploy=true和unpackwars=true時,如:
server.xml
...<host name="localhost" debug="0" appbase="webapps"
unpackwars="true" autodeploy="true"
xmlvalidation="false" xmlnamespaceaware="false">...
下面的部署順序在tomcat啟動時發(fā)生:
1。任何具有上下文描述符(context descriptors)的web應(yīng)用首先被部署,tomcat在$catalina_home/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結(jié)尾的文件,將其作為web應(yīng)用的上下文描述符,并按照文件名排序逐一部署。
注意作為上下文描述符的文件名可以不為web應(yīng)用名,因為tomcat會讀取其中的內(nèi)容來判斷,但是改變上下文描述符的文件名會使部署的順序發(fā)生變化。
如:
$catalina_home/conf/catalina/localhost/devoffer.xml
<?xml version='1.0' encoding='utf-8'?><context docbase="e:/eclipse3.1rc3/workspace/devofferproject/web" path="/devoffer" usenaming="false" workdir="work/catalina/localhost/devoffer"></context>
上面的上下文描述符說明了devoff這個web應(yīng)用的docbase和部署的path以及其工作目錄。
2。另外,位于$catalina_home/webapps/[webappname]/meta-inf/目錄中的context.xml也作為上下文描述符使用,在處理了上文所說的位于$catalina_home/conf/[enginename]/[hostname]/目錄中的上下文描述符后,tomcat將部署這些在web應(yīng)用的meta-inf目錄中的context.xml。加載順序按照應(yīng)用名的字母順序。
3。沒有上下文描述符的已經(jīng)被展開的web應(yīng)用將按照其應(yīng)用名順序逐個被部署,如果其中的一個web應(yīng)用關(guān)聯(lián)著一個在appbase(一般為"$catalina_home/webapps"目錄)中的war文件,則當(dāng)war文件比相對應(yīng)的被展開的web應(yīng)用新時,那個被展開的web應(yīng)用將被刪除,tomcat將war文件展開并部署作為替換舊的web應(yīng)用。
4。在執(zhí)行了1-3步后,tomcat將部署在appbase中的war文件。
請注意:在每個應(yīng)用被部署后,tomcat為沒有上下文描述符的web應(yīng)用建立上下文描述符。
二、非自動部署配置下的應(yīng)用加載順序:
此時完全按照在tomcat manager中人工部署順序。
三、參考資源:
http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html