最近抽時(shí)間想說(shuō)來(lái)把How Tomcat Works翻譯看看鹉动,能翻多少算多少吧,以下是書(shū)的內(nèi)容:
Introduction
綜述:
歡迎來(lái)到How Tomcat Works宏邮,該書(shū)剖析Tomcat并解釋了它其中名為Catalina的Servlet容器的工作原理泽示,它免費(fèi),開(kāi)源并且最為流行蜜氨。Tomcat是一個(gè)復(fù)雜系統(tǒng)械筛,由許多不同組件組成。那些想要學(xué)習(xí)Tomcat的人往往知道從哪開(kāi)始飒炎。這本書(shū)先是整體埋哟,然后詳細(xì)解釋各部分,這樣才會(huì)印象深刻郎汪。
???????? 你應(yīng)該閱讀這個(gè)綜述應(yīng)該它解釋了書(shū)的結(jié)構(gòu)赤赊,并且給你簡(jiǎn)短介紹了所需的軟件闯狱。Preparing the Prerequisite Software部分會(huì)建議你下載哪些軟件,如何組織你的代碼結(jié)構(gòu)砍鸠,ETC.
這本書(shū)寫(xiě)給:
這本書(shū)寫(xiě)給所有的JAVA工作者扩氢。
為了更好的閱讀此書(shū)耕驰,你需要理解面向?qū)ο缶幊桃瑁瑂ervlet編程。如果你對(duì)servlet不熟悉朦肘,推薦看一本書(shū):Budi’s JAVA for the web with servlets, jsp and ejb饭弓。為了更好的理解主題,每章都會(huì)有背景信息媒抠。
Servlet容器如何工作:
Servlet容器是個(gè)復(fù)雜系統(tǒng)弟断,主要是為了servlet能響應(yīng)請(qǐng)求,主要由三部分組成:
[if !supportLists]1.??????[endif]創(chuàng)建一個(gè)request對(duì)象趴生,并綁定會(huì)被servlet用到的信息阀趴,比如參數(shù),請(qǐng)求頭苍匆,cookies刘急,查詢(xún)字符串,URI等等浸踩。這個(gè)request對(duì)象實(shí)現(xiàn)了javax.servlet.ServletRequest或者javax.servlet.http.ServletRequest接口叔汁。
[if !supportLists]2.??????[endif]創(chuàng)建一個(gè)response對(duì)象,servlet會(huì)用它來(lái)向web客戶(hù)端發(fā)送響應(yīng)检碗。這個(gè)response對(duì)象實(shí)現(xiàn)了javax.servlet.ServletResponse或者java.servlet.http.ServletResponse對(duì)象据块。
[if !supportLists]3.??????[endif]調(diào)用servlet的服務(wù)方法,傳遞request和response折剃,在這里servlet可以閱讀request的值另假,還可以把值寫(xiě)入response對(duì)象。
接下來(lái)會(huì)有對(duì)Catalina Servlet容器的詳細(xì)闡述怕犁。
Catalina塊狀圖
???????? Catalina是一個(gè)精致的軟件浪谴,它的設(shè)計(jì)和構(gòu)成很高級(jí),并且模塊化因苹」冻埽“How a Servlet Container works”章節(jié)將會(huì)介紹其基本任務(wù),你會(huì)發(fā)現(xiàn)它其實(shí)由兩大部分組成:Connector和Container.
特征1:Catalina的主體部分
???????? Connector是連接某個(gè)請(qǐng)求和container的扶檐,它的任務(wù)是為了它接收的每個(gè)http請(qǐng)求構(gòu)建一個(gè)請(qǐng)求對(duì)象以及凶杖,一個(gè)response對(duì)象。然后它會(huì)交給container進(jìn)行加工款筑。Container接收后會(huì)調(diào)用servlet的方法智蝠。
???????? 請(qǐng)記住腾么,這個(gè)介紹只能說(shuō)是冰山一角。Container做了許多許多的事情杈湾,比如:在它調(diào)用servlet的方法之前解虱,它必須要先加載servlet,識(shí)別用戶(hù)權(quán)限漆撞,刷新用戶(hù)session殴泰,所以它會(huì)用到許多不同的模塊去處理也不足為奇了。比如說(shuō):管理員模塊是用來(lái)管理用戶(hù)session浮驳,裝載模塊是用來(lái)裝載servlet的悍汛。
Tomcat4和Tomcat5
???????? 這段不想翻,沒(méi)啥意思
各章綜述
???????? 這本書(shū)共有20章至会。開(kāi)始前兩章是介紹离咐。第一章解釋了一個(gè)HTTP服務(wù)器是怎么工作的,第二章講一個(gè)簡(jiǎn)單的容器奉件。第三宵蛀、四章講connector,五~二十章講容器的每個(gè)組件县貌,以下是各章的概述术陶。
???????? 值得注意的是,每一章都會(huì)用一個(gè)示例應(yīng)用去介紹相應(yīng)的組件窃这。
第一章:
???????? 作為書(shū)的開(kāi)頭瞳别,講一個(gè)簡(jiǎn)單的HTTP服務(wù)器,去做一個(gè)能夠正常工作的HTTP服務(wù)器杭攻,你需要了解其內(nèi)部?jī)蓚€(gè)java類(lèi):Socket和ServerSocket祟敛。這是一個(gè)有用的提示,為了你能更好的理解服務(wù)器是如何工作的兆解。
第二章:
???????? 解釋一個(gè)簡(jiǎn)單的servlet容器是如何工作的馆铁。這一章也會(huì)講兩個(gè)簡(jiǎn)單例子,一個(gè)能夠訪問(wèn)靜態(tài)資源锅睛,一個(gè)能夠響應(yīng)簡(jiǎn)單的servlet埠巨,特別是你會(huì)學(xué)到如何創(chuàng)建request和response對(duì)象并把它們傳給相應(yīng)的servlet方法。當(dāng)然现拒,你可以從瀏覽器來(lái)調(diào)用servlet容器中的某一個(gè)servlet辣垒。
第三章:
???????? 講一個(gè)Tomcat4默認(rèn)connector的簡(jiǎn)化版本,這一章會(huì)做一個(gè)應(yīng)用印蔬,相當(dāng)于是給第四章做鋪墊了勋桶。
第四章:
???????? 講Tomcat4的默認(rèn)connector,這個(gè)connector后面因?yàn)樗俣葐?wèn)題被一個(gè)叫Coyote的connector取代了。恩例驹。捐韩。。所以這個(gè)connector更簡(jiǎn)單鹃锈,更好理解荤胁,更易于入門(mén)。
第五章:
???????? 討論container模塊屎债,這個(gè)模塊實(shí)現(xiàn)了org.apache.catalina.Container接口仅政,container有四種類(lèi)型:engine,host,context,wrapper。這章用context和wrapper做了兩個(gè)應(yīng)用扔茅。
第六章:
???????? 解釋Lifecycle接口已旧,這個(gè)接口定義了catalina組件的生命周期秸苗,還提供了一種發(fā)送通知給其他組件的高級(jí)方式召娜。另外,這個(gè)接口有一個(gè)全局的開(kāi)始惊楼、停止機(jī)制玖瘸,可以同時(shí)開(kāi)始、停止所有組件檀咙。
第七章:
???????? 講loggers雅倒,是一個(gè)記錄錯(cuò)誤和其他信息的模塊。
第八章:
???????? 講loaders弧可,是catalina的重要部分蔑匣,負(fù)責(zé)加載servlet和web應(yīng)用會(huì)用到的其他類(lèi)。同時(shí)棕诵,這章也講了如何去重新加載servlet裁良。
第九章:
???????? 講manager,管理會(huì)話的組件校套。許多不同類(lèi)型的manager价脾,以及如何持久化存儲(chǔ)會(huì)話對(duì)象。在這章結(jié)尾笛匙,會(huì)教你做一個(gè)簡(jiǎn)單應(yīng)用侨把,用標(biāo)準(zhǔn)版manager,跑一個(gè)servlet妹孙,并且用會(huì)話對(duì)象去存值秋柄。
第十章:
???????? 講web應(yīng)用安全,主要是限制訪問(wèn)某個(gè)部分的內(nèi)容蠢正,你會(huì)學(xué)到:principles,roles,login config,authenticators等等骇笔。你會(huì)寫(xiě)兩個(gè)應(yīng)用,有權(quán)限過(guò)濾,用到StandardContext蜘拉,有基本的用戶(hù)權(quán)限功能萨西。
第十一章:
???????? 詳細(xì)解釋StandardWrapper,在web應(yīng)用中它用來(lái)一個(gè)servlet旭旭。這章會(huì)特別提到怎么過(guò)濾谎脯,servlet的方法怎么被調(diào)用。這章的應(yīng)用會(huì)用StandardWrapper做持寄。
第十二章:
???????? 詳細(xì)解釋StandardContext源梭,它代表一個(gè)web應(yīng)用。討論一個(gè)StandardContext如何配置稍味,當(dāng)每個(gè)HTTP請(qǐng)求時(shí)它內(nèi)部是如何工作的废麻,它是如何支持自動(dòng)重載的,以及如何與關(guān)聯(lián)組件如何分享定時(shí)任務(wù)線程模庐。
第十三章:
???????? 講StandardEngine和StandardHost烛愧。
第十四章:
???????? Server和service組件,server負(fù)責(zé)啟動(dòng)和停止整個(gè)servlet容器掂碱,service負(fù)責(zé)掌控住一個(gè)容器和多個(gè)connector怜姿。這章的應(yīng)用會(huì)告訴我們?cè)趺从胹erver和service.
第十五章:
???????? 通過(guò)digester解析一個(gè)web應(yīng)用的配置,digester是apache基金會(huì)的一個(gè)牛逼項(xiàng)目疼燥。它可以通過(guò)digester庫(kù)把XML里面的節(jié)點(diǎn)解析成java對(duì)象沧卢。然后會(huì)介紹StandardContext的配置對(duì)象ContextConfig.
第十六章:
???????? Tomcat的結(jié)束回調(diào)配件,通常在這個(gè)時(shí)候我們會(huì)對(duì)Tomcat做一次大掃除醉者。
第十七章:
???????? 介紹用批處理文件或者終端命令來(lái)控制Tomcat的啟停但狭。
第十八章:
???????? 介紹deployer,用來(lái)部署和安裝web應(yīng)用的組件撬即。
第十九章:
???????? 介紹一個(gè)特殊接口:ContainerServlet立磁,它提供了一種訪問(wèn)catalina內(nèi)部對(duì)象的方式。尤其是搞莺,還要介紹Manager應(yīng)用息罗,用來(lái)管理部署好的web應(yīng)用。
第二十章:
???????? 介紹JMX才沧,以及Tomcat如何通過(guò)MBeans來(lái)管理其內(nèi)部的對(duì)象迈喉。
每一章的app
???????? 每一章都會(huì)有一到兩個(gè)app,來(lái)介紹catalina的某一個(gè)組件温圆。通常挨摸,你會(huì)看到一個(gè)簡(jiǎn)化版本,或者是如何去用catalina組件的一段代碼岁歉。所有類(lèi)和接口都不會(huì)超過(guò)上一章的范圍得运。
好了膝蜈,請(qǐng)把要用的軟件安裝好。