首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Tomcat 核心組件架構深度解析:從 Server 到 Wrapper

     編輯:Java 相關知識

宏觀架構:server.xml 的五大核心組件

透過 server.xml 可見 Tomcat 宏觀結構:

  • Server:JVM 入口,單例,監聽 shutdown 指令,含一或多個 Service。
  • Service:共享同一 Container 的多個 Connector 集合,通常對應一個 Engine。
  • Connector:處理客戶端連接(HTTP 8080 / JK2 8009),將請求轉給 Engine。
  • Engine:請求處理入口,管理多個虛擬主機,含預設 Host。
  • Host:虛擬主機,部署多個 Web Application(Context)。

核心接口體系:生命週期與容器層級

1. Lifecycle & LifecycleListener

統一組件啟動/停止契約:start() 發送 START_EVENT,stop() 發送 STOP_EVENT,監聽器實作 lifecycleEvent() 響應。

2. Container 及其四層級

容器負責接收請求、處理、回應,支援 Pipeline 機制。四層級由粗到細:

  1. Engine:頂層入口,可含多 Host/Context。
  2. Host:虛擬主機。
  3. Context:單一 ServletContext,含多 Wrapper。
  4. Wrapper:單一 Servlet(支援 SingleThreadModel 多實例)。

容器常綁定組件:Loader(類載入)、Logger(日誌)、Manager(Session)、Realm(安全)、Resources(JNDI)。核心方法 invoke(Request, Response) 驅動請求處理。

3. Pipeline & Valve:責任鏈模式的實踐

Pipeline 為 Valve 集合,按序調用;setBasic() 確保最後一個 Valve 必須處理請求並產生回應。Valve 綁定於 Container,核心 invoke(Request, Response, ValveContext) 可:檢查/修改請求回應、生成回應返回、包裝對象增強功能、呼叫下一個 Valve、檢查後續回應。ValveContext 封裝調用下一 Valve 的機制。

關鍵組件接口詳解

  • Engine:Catalina Servlet 入口,setService()、setDefaultHost()、addDefaultContext() 定義屬性。
  • Host:虛擬主機,父容器通常為 Engine,子容器為 Context。
  • Context:對應 web.xml 資源配置,方法多為讀取部署描述符。
  • Wrapper:管理 Servlet 生命週期(init()/destroy()),無子容器。
  • Server:整個 Catalina 入口,含多 Service,實作 Lifecycle,監聽 shutdown 端口。
  • Service:Connector 集合,共享同一 Container,JVM 級資源共享但邏輯隔離。
  • Connector:接收請求、建立 Request/Response 對象,設定協議、Scheme、Header 等屬性。

總結

Tomcat 以 ContainerBase 實作核心接口,構建出清晰的層級容器體系,配合 Pipeline-Valve 責任鏈,實現靈活可擴展的請求處理管線。下篇將逐一剖析各組件實現細節。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved