Tomcat源碼結構介紹
在分析Tomcat源碼之前,我們先來看下Tomcat源碼的結構組成,這樣會更加的有利于我們更好的來分析源碼。
1.項目源碼結構
我們先從源碼結構開始。Tomcat 伺服器相關的代碼在 java 檔案夾下面,後面我們在進入這個檔案夾去分析:
之前如何手動在Tomcat中部署過項目的話,這塊應該會比較清楚點。
2.Tomcat源碼結構
Tomcat 源碼位于 java 檔案夾下面。這個java檔案夾中的每個包的作用,我們簡單的來介紹下,後面在分析核心源碼的時候會重點講解。
我們可以看到在java目錄下,分為了兩個結構,一個是javax另一個是org.apache這兩個包
2.1 javax
在javax中儲存的是新的JavaEE規範。可以具體來看看每個目錄的作用。
子產品 | 作用說明 |
---|---|
annotation | annotation 這個子產品的作用是定義了一些公用的注解,避免在不同的規範中定義相同的注解。 |
ejb | ejb是個古老的傳說,我們不管 |
el | 在jsp中可以使用EL表達式,這麼子產品解析EL表達式的 |
和郵件相關的規範 | |
persistence | 持久化相關的 |
security | 和安全相關的内容 |
servlet | 這個指定的是Servlet的開發規範,Tomcat本質上就是一個實作了Servlet規範的一個容器,Servlet定義了服務端處理Http請求和響應的方式(規範) |
websocket | 定義了使用 websocket 協定的服務端和用戶端 API |
xml.ws | 定義了基于 SOAP 協定的 xml 方式的 web 服務 |
2.2 org.apache
org.apache這個包是Tomcat的源碼包,也是針對上面的JavaEE規範的部分實作,Tomcat的本質就是對JavaEE的某些規範的實作合集,首先肯定實作了Servlet規範
子產品 | 作用 |
---|---|
catalina | catalina是Tomcat的核心子產品,裡面完整的實作了Servlet規範,Tomcat啟動的主方法也在裡面,後面我們分析的重點。 |
coyote | tomcat 的核心代碼,負責将網絡請求轉化後和 Catalina 進行通信。 |
el | 這個是上面javax中的el規範的實作 |
jasper | 主要負責把jsp代碼轉換為java代碼。 |
juli | 日志相關的工具 |
naming | 命名空間相關的内容 |
tomcat | 各種輔助工具,包括 websocket 的實作。 |
3.Tomcat子產品設計
連接配接器的作用:
- 連接配接器功能· 監聽網絡端口。
- 接受網絡連接配接請求。
- 根據具體應用層協定(http/ajp)解析位元組流,生成統一的Tomcat Request對象。
- 将Tomcat Request對象轉成标準的ServletRequest。
- 調用Servlet容器,得到ServletResponse。
- 将ServletResponse轉成Tomcat Response對象。
- 将Tomcat Response轉成網絡位元組流。
- 将響應位元組流寫回給浏覽器。
到此Tomcat的目錄結構我們已經分析萬層,接下來就可以開始我們的Tomcat架構設計!!!