《how tomcat works》翻譯開篇
《how tomcat work》
翻譯此書只為學習,有錯誤,不到位之處,請指出。文筆欠佳,請多海涵。
簡介
概述
歡迎來到《how tomcat works》,這本書剖析了當下免費的 ,開源的,並且是最為流行的Servlet容器Catalina(tomcat) 4.1.12和5.0.18的內部工作原理。tomcat是一個複雜的系統,由多個不同的元件構成,這些是很多剛開始接觸tomcat的,希望瞭解它是怎麼運作的人希望學習的。這本書先是做一個總的概括,然後針對每一個元件,構建一個相比元件本身更加簡單的示例,幫助讀者簡單的理解,最後講解元件本身。
你應該先從閱讀下面的介紹開始閱讀本書,它會告訴你這本書的整體結構,並且告訴你應用構建的簡要概述,“準備必要軟體”章節會告訴你應該下載哪些軟體和怎麼組織程式碼目錄結構。
這本書適合的讀者
這本書是為所有從事java開發的人準備的
- servlet/jsp開發,或者tomcat的使用者。
- 想要加入tomcat開發的人
- 從來沒有進行過web開發,但是對軟體開發感興趣,這本書會告訴你像tomcat這種大型應用是如何設計和開發的
- 你想配置或者定製化tomcat,你也可以閱讀本書。
想要理解本書的內容,你需要懂得java面向物件程式設計和servlet程式設計。如果你還不瞭解這些內容,就先找相關書籍看一下。為了使內容更加容易理解,每章節會先介紹一些必要的背景知識。
Servlet容器是怎樣工作的?
一個servlet容器是一個很複雜的系統,但是,最基本的,servlet對於一個請求會做三件事:
- 建立一個請求物件(request),並用可能被已經啟動的servlet使用到的資訊初始化它。比如:請求引數、頭資訊、cookies、查詢字串、URI等。request物件是javax.servlet.ServletRequest介面或者javax.servlet.http.ServletRequest介面的例項。
- 建立一個客戶端響應物件(response),它通常被servlet傳送給web客戶端。response物件是javax.servlet.ServletResponse介面或者javax.servlet.http.ServletResponse介面的例項。
- 呼叫servlet的服務方法,傳遞request和response物件,servlet從request中讀取資訊,並把要返回的資訊寫入response中。
當你閱讀每章節時,會看到對servlet容器詳細的討論。
tomcat的框架圖
tomcat是一個設計巧妙,優雅的軟體。它是模組化的,基於任務排程的。在“servlet是如何工作的”章節,你會看到它的兩個主要的組成部分:聯結器、容器。
框架圖就如【圖1.1】所示,這裡是簡單的描述一下。在接下來的章節裡我會為你一點一點解開它的面紗。
如圖,connecter通過請求與container連線。connecter的工作是為收到的每一個http請求構建一個request和response物件。然後connecter將任務移交給container,container從connecter那得到request和reponse物件,並且負責呼叫所請求servlet相應的處理方法。
需要注意的是,上面描述不過是冰山一角,容器還會做很多事情。比如:在它呼叫servlet方法之前,它必須載入servlet,檢查使用者是否合法(如果必要的話),併為當前使用者更新session等等。並且它還包含很多處理模組,比如:管理模組(manager module)處理使用者會話,載入模組(loader)載入class檔案等等。
tomcat 4 和 tomcat 5
這本書覆蓋了tomcat4和tomcat5,這裡說一下它們的不同。
- tomcat5支援 Servlet2.4 和jsp2.0 標準。tomcat4支援Servlet2.3和jsp1.2標準。
- tomcat5比tomcat4有更多高效的聯結器。
- tomcat5的後臺處理程式共用一個執行緒,鑑於tomcat4每個後臺處理程式都各自使用一個執行緒,因此tomcat5在這方面更加節省資源。
- tomcat5不需要專門的元件字典用來查詢子元件,所以精簡了程式碼。
對每一章的概述
本書一共有20章,前兩章主要作為本書的介紹。
第一章解釋了一個http伺服器是如何工作的。第二章描述了一個簡單的servlet容器的特徵。接下來的兩章專注講解聯結器。剩下的章節講解容器的每一個元件。下面是每一章的概要。
注意:每一章都會有一個和元件類似的示例程式會被講解。
第一章:java的網路包:Socket和ServletSocket
第二章:一個簡單的servlet容器是如何工作的。
第三章:介紹一個簡化版的tomcat4的connecter。
第四章:介紹tomcat4的預設connecter
第五章:介紹container的模組:engine、host、context、wrapper
第六章:介紹Lifecycle介面。各元件的生命週期。
第七章:日誌介面。
第八章:載入模組,loader介面。
第九章:管理使用者會話。
第十章:安全機制。
第十一章:org.apache.catalina.core.StandardWrapper介面,在容器中通常代表一個servlet。
第十二章:org.apache.catalina.core.StandardContext介面,在容器中通常代表一個應用程式。
第十三章:剩下的host和engine容器。
第十四章:伺服器和服務元件。
第十五章:配置web程式。
第十六章:關閉命令。
第十七章:通過批處理或者指令碼來啟動或者關閉tomcat。
第十八章:部署和裝載元件。
第十九章:一個特殊的介面,ContainerServlet。我們可以通過它獲取容器的核心物件。
第二十章:JMX(Java Management Extensions,即Java管理擴充套件)。
為學習每一個章節準備的程式
每一個章節會有1~2個示例程式。你會看到一個簡化版的元件。或者通過code解釋這個元件是如何使用的。所有的class檔案或者interface檔案都在ex[章節號].pyrmont包或者子包裡。比如章節一的檔案就在ex01.pyrmont中。
開發所需的軟體及安裝
- 安裝 j2SE1.4
- 解壓原始檔,windows使用者執行win-compile.bat檔案(linux使用者執行:./linux-compile.sh),編譯java檔案。