Tomcat5的web應用啟動(dòng)順序詳解作者:cleverpig版權聲明:本文可以自由轉載,轉載時(shí)請務(wù)必以超鏈接形式標明文章原始出處和作者信息及本聲明作者: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,啟動(dòng)順序
摘要: 應用Tomcat對于我們來(lái)講實(shí)在是司空見(jiàn)慣了,但是對于每個(gè)使用者來(lái)講,應該了解其運轉的機制也是必不可少的,本人在維護"apache開(kāi)源項目"論壇時(shí)遇到此問(wèn)題,并略作研究,望與大家共討、分享。
一、配置自動(dòng)部署時(shí)的web應用加載順序: 當tomcat的server.xml中對虛擬主機(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應用首先被部署,tomcat在$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中羅列出所有的以xml為結尾的文件,將其作為web應用的上下文描述符,并按照文件名排序逐一部署。
注意作為上下文描述符的文件名可以不為web應用名,因為tomcat會(huì )讀取其中的內容來(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應用的docBase和部署的path以及其工作目錄。
2。另外,位于$CATALINA_HOME/webapps/[webappname]/META-INF/目錄中的context.xml也作為上下文描述符使用,在處理了上文所說(shuō)的位于$CATALINA_HOME/conf/[enginename]/[hostname]/目錄中的上下文描述符后,tomcat將部署這些在web應用的META-INF目錄中的context.xml。加載順序按照應用名的字母順序。
3。沒(méi)有上下文描述符的已經(jīng)被展開(kāi)的web應用將按照其應用名順序逐個(gè)被部署,如果其中的一個(gè)web應用關(guān)聯(lián)著(zhù)一個(gè)在appBase(一般為"$CATALINA_HOME/webapps"目錄)中的WAR文件,則當WAR文件比相對應的被展開(kāi)的web應用新時(shí),那個(gè)被展開(kāi)的web應用將被刪除,tomcat將WAR文件展開(kāi)并部署作為替換舊的web應用。
4。在執行了1-3步后,tomcat將部署在appBase中的WAR文件。
請注意:在每個(gè)應用被部署后,tomcat為沒(méi)有上下文描述符的web應用建立上下文描述符。二、非自動(dòng)部署配置下的應用加載順序: 此時(shí)完全按照在tomcat manager中人工部署順序。
三、參考資源: http://tomcat.apache.org/tomcat-5.5-doc/deployer-howto.html四、參加討論:http://www.matrix.org.cn/thread.shtml?topicId=32324&forumId=17