Tomcat5的web應用啟動順序詳解
作者:cleverpig版權(quán)聲明:本文可以自由轉(zhuǎn)載,轉(zhuǎn)載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明作者:cleverpig(
http://blog.matrix.org.cn/page/cleverpig)
原文:[http://www.matrix.org.cn/resource/article/43/43987_JGroups.html]http://www.matrix.org.cn/resource/article/43/43987_JGroups.html[/url]
關(guān)鍵字:tomcat,web,啟動順序
摘要: 應用Tomcat對于我們來講實在是司空見慣了,但是對于每個使用者來講,應該了解其運轉(zhuǎn)的機制也是必不可少的,本人在維護"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啟動時發(fā)生:
1。任何具有上下文描述符(Context Descriptors)的web應用首先被部署,tomcat在$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結(jié)尾的文件,將其作為web應用的上下文描述符,并按照文件名排序逐一部署。
注意作為上下文描述符的文件名可以不為web應用名,因為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應用的docBase和部署的path以及其工作目錄。
2。另外,位于$CATALINA_HOME/webapps/[webappname]/META-INF/目錄中的context.xml也作為上下文描述符使用,在處理了上文所說的位于$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中的上下文描述符后,tomcat將部署這些在web應用的META-INF目錄中的context.xml。加載順序按照應用名的字母順序。
3。沒有上下文描述符的已經(jīng)被展開的web應用將按照其應用名順序逐個被部署,如果其中的一個web應用關(guān)聯(lián)著一個在appBase(一般為"$CATALINA_HOME/webapps"目錄)中的WAR文件,則當WAR文件比相對應的被展開的web應用新時,那個被展開的web應用將被刪除,tomcat將WAR文件展開并部署作為替換舊的web應用。
4。在執(zhí)行了1-3步后,tomcat將部署在appBase中的WAR文件。
請注意:在每個應用被部署后,tomcat為沒有上下文描述符的web應用建立上下文描述符。二、非自動部署配置下的應用加載順序: 此時完全按照在tomcat manager中人工部署順序。
三、參考資源: http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html四、參加討論:http://www.matrix.org.cn/thread.shtml?topicId=32324&forumId=17