Tomcat5的web應用啟動順序詳解
2024-09-06 19:01:08
供稿:網友
摘要:
應用tomcat對于我們來講實在是司空見慣了,但是對于每個使用者來講,應該了解其運轉的機制也是必不可少的,本人在維護"apache開源項目"論壇時遇到此問題,并略作研究,望與大家共討、分享。
一、配置自動部署時的web應用加載順序:
當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啟動時發生:
1。任何具有上下文描述符(context descriptors)的web應用首先被部署,tomcat在$catalina_home/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結尾的文件,將其作為web應用的上下文描述符,并按照文件名排序逐一部署。
注意作為上下文描述符的文件名可以不為web應用名,因為tomcat會讀取其中的內容來判斷,但是改變上下文描述符的文件名會使部署的順序發生變化。
如:
$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應用的docbase和部署的path以及其工作目錄。
2。另外,位于$catalina_home/webapps/[webappname]/meta-inf/目錄中的context.xml也作為上下文描述符使用,在處理了上文所說的位于$catalina_home/conf/[enginename]/[hostname]/目錄中的上下文描述符后,tomcat將部署這些在web應用的meta-inf目錄中的context.xml。加載順序按照應用名的字母順序。
3。沒有上下文描述符的已經被展開的web應用將按照其應用名順序逐個被部署,如果其中的一個web應用關聯著一個在appbase(一般為"$catalina_home/webapps"目錄)中的war文件,則當war文件比相對應的被展開的web應用新時,那個被展開的web應用將被刪除,tomcat將war文件展開并部署作為替換舊的web應用。
4。在執行了1-3步后,tomcat將部署在appbase中的war文件。
請注意:在每個應用被部署后,tomcat為沒有上下文描述符的web應用建立上下文描述符。
二、非自動部署配置下的應用加載順序:
此時完全按照在tomcat manager中人工部署順序。
三、參考資源:
http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html