tomcat各個組件功能
Server提供一個接口,由1至多個Service組成,讓其它程序可以訪問到這個Service集合,同時維護各個Service的生命周期,包括如何初始化,如何結束服務,如何找到別人請求的服務。
Service又由1-n個Connector及單個Container組成,只是在Container和Connector外多包了一層,提供各種服務
Connector組件是可選擇替換的,負責接收瀏覽器發過來的TCP連接請求,創建Request/Response,分配線程,將創建的對象傳遞給Container來處理請求
Container是容器的父接口,由四個容器組成,分別是Engine,Host,Context,Wrapper。其中Engine包含Host,Host包含Context,Content包含Wrapper,一個Servlet class對應一個Wrapper
Engine容器是作為頂級Container組件來設計的,由Host組成,其作用相當于一個Container的門面。有了Engine,請求的處理過程變為:瀏覽器發出請求,Connector接受請求,將請求交由Container(這里是Engine)處理,Container(Engine來擔當)查找請求對應的Host并將請求傳遞給它,Host拿到請求后查找相應的應用上下文環境,準備 servlet環境并調用service方法。
Host容器是Engine的子容器,一個Host在Engine中代表一個虛擬主機,這個主機可以運行多個應用,他負責安裝和展開這些應用,并且標識這個應用,以便能夠區分他們。它的子容器通常是Context,他除了關聯子容器外,還保存一個主機應有的信息。Host不是必需的,但是要運行 war程序,就必須要使用Host,因為在war中必有web.xml文件,這個文件解析就需要Host,如果有多個Host就需要定義一個top容器 Engine,而Engine沒有父容器,一個Engine就代表一個完整的Servlet引擎
Context代表Servlet的Context,它具備Servlet運行的基本環境,理論上只要有Context就能運行Servlet,簡單的Tomcat可以沒有Engine和Host。其最重要的功能就是管理Servlet實例,Servlet實例在Context中是以Wrapper 出現的。
Wrapper代表一個Servlet,它負責管理Servlet,包括裝載,初始化,執行以及資源回收。它是最底層的容器。
服務器接口 org.apache.catalina.Server
生命周期接口 org.apache.catalina.Lifecycle
監聽并接收請求 org.apache.catalina.connector.Connector
處理請求 org.apache.catalina.Container
Web應用 org.apache.catalina.Context(繼承了Container)
虛擬主機 org.apache.catalina.Host(繼承了Container)
服務接口 org.apache.catalina.Service
Engine org.apache.catalina.Engine
對于Tomcat服務器來說,除了Server代表它自己以外,其它組件都是功能組件,都有其職責范圍。Service為最頂層的組件,可以添加 Connector和Container組件。Engine是Container的最頂層組件,可以添加Host組件,但不能添加父組件。Host組件的父組件是Engine,Host下面包含有Context組件。
瀏覽器發出請求,Connector接受請求,將請求交由Container處理,Container查找請求對應的Host并將請求傳遞給它,Host拿到請求后查找相應的應用上下文環境,準備servlet環境并調用service方法。
組件的生命周期由包含它的父組件控制,所以調用組件的start方法也就是調用其包含的子組件的start方法