1. 程式人生 > >Tomcat原始碼分析:一、tomcat元件認識

Tomcat原始碼分析:一、tomcat元件認識

 

 

前言

     最近一次上線過程中出現了jekin是自動化部署的web環境跟本地開發環境不一致的情況,導致生產環境應用訪問失敗,因此閱讀tomcat原始碼,以加深對web的認識。

基本元件

在閱讀原始碼之前,最好是對整個應用架構進行了解跟分析,從而會對程式閱讀帶來事半功倍的效果。

change our perspective,Tomcat整體元件結構圖如下:

基本元件圖

Server:一個tomcat例項,tomcat支援在一臺機器上啟動多個tomcat例項。不同的tomcat例項產生不同的JVM程序,同一個例項下的不同的application共享一個JVM,但是具有獨立的appclassloader(以此來達到資源隔離)。

Service:是一組Connector與Engine的集合。採用關聯關係將外部請求與內部處理器連線的橋樑。

Connector:  是外部請求的入口,通過埠監聽、連線控制、協議解析等手段,實現外部請求到tomcat內部物件的對映(對映)

Engine:整個servlet引擎。該引擎提供了多個虛擬主機Host的支援(多域名支援)

Host:虛擬主機。一個虛擬主機包含多個context

Context:一個context代表了一個servlet context。從context是Tomcat的抽象概念,servlet context則是j2e規範層次。一個context實際上對應了一個application。

Container:tomcat申明 A Container is an object that can execute requests received from a client, and return responses based on those requests. 但是在原始碼中未發現Container新增對客戶端請求處理的能力。container是對engine、host、context、warpper元件的抽象。

 

配置檔案初探

server.xml