構成:
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/*.jarweb