構成:
1.server代表整個catalina serverlet容器
2.service:由一個或多個connector以及一個共享的engine處理引擎組成
3.connector 在指定端口上監聽客戶請求,并将請求交給Engine處理(coyote http 和coyoteJK2)
4.Engine 必須配置在Service元件下,Engine可以配置多個虛拟主機。
5.host 代表一個虛拟主機,每個虛拟主機下配置一個或多個web應用,每個web應用對應一個context,有一個context path
6.context 在建立時根據$catalina_home/conf/web.xml 和 $webapp/web-inf/web.xml 載入servlet
載入器:
如何放置class和資源檔案
A.對應于某個web應用:class置于web應用下的web-inf/classes 下 jar置于web-inf/lib下
B.對應于多個web應用:class置于$catalina_home/shared/class目錄.
TomCat類的加載(ClassLoader):
Bootstrap($JAVA_HOME/jre/lib/ext/*.jar)
System($CLASSPATH/*.class和指定的jar)
Common($CATALINA_HOME/common 下的classes,lib,endores三個子目錄)
Catalina ($CATALINA_HOME/server/下的classes和lib目錄僅對Tomcat可見)
& Shared($CATALINA_HOME/shared/下的classes和lib目錄以及$CATALINA_HOME/lib目錄)僅對Web應用程式可見,對Tomcat不可見
WebApp($WEBAPP/Web-INF/*僅對該WEB應用可見classes/*.class lib/*.jar)
對于web應用,加載類和資源的順序為:
/Web-INF/classes -->/Web-INF/lib/*.jar -->Bootstrap -->System --> $CATALINA_HOME/common/classes
-->$CATALINA_HOME/common/endores/*.jar --> $CATALINA_HOME/common/lib/*.jar --> $CATALINA_HOME/shared/classes
-->$CATALINA_HOME/shared/lib/*.jar