天天看點

Tomcat Server 原理

構成:

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