天天看點

Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹

Tomcat源碼結構介紹

在分析Tomcat源碼之前,我們先來看下Tomcat源碼的結構組成,這樣會更加的有利于我們更好的來分析源碼。

1.項目源碼結構

我們先從源碼結構開始。Tomcat 伺服器相關的代碼在 java 檔案夾下面,後面我們在進入這個檔案夾去分析:

Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹

之前如何手動在Tomcat中部署過項目的話,這塊應該會比較清楚點。

2.Tomcat源碼結構

Tomcat 源碼位于 java 檔案夾下面。這個java檔案夾中的每個包的作用,我們簡單的來介紹下,後面在分析核心源碼的時候會重點講解。

Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹

我們可以看到在java目錄下,分為了兩個結構,一個是javax另一個是org.apache這兩個包

2.1 javax

在javax中儲存的是新的JavaEE規範。可以具體來看看每個目錄的作用。

Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹
子產品 作用說明
annotation annotation 這個子產品的作用是定義了一些公用的注解,避免在不同的規範中定義相同的注解。
ejb ejb是個古老的傳說,我們不管
el 在jsp中可以使用EL表達式,這麼子產品解析EL表達式的
mail 和郵件相關的規範
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規範

Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹
子產品 作用
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源碼結構介紹
Tomcat基礎篇-項目源碼結構介紹Tomcat源碼結構介紹

到此Tomcat的目錄結構我們已經分析萬層,接下來就可以開始我們的Tomcat架構設計!!!