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