Tomcat整體架構(gòu)簡析

一、Tomcat 容器的總體架構(gòu)

Tomcat 容器主要用來提供servlet運(yùn)行環(huán)境罐栈,對其生命期進(jìn)行管理幕袱,從而提供各種服務(wù)service。

Tomcat 的兩大核心組件:Connector和Container共同組成了各種服務(wù)悠瞬。如下圖所示:

Tomcat總體架構(gòu)分析圖

Connector

connector主要用于監(jiān)聽各種協(xié)議的發(fā)送的請求,并創(chuàng)建出請求響應(yīng)的Request和Response對象涯捻。

之后創(chuàng)建一個(gè)處理該請求的線程浅妆,傳入request和response對象,并提交到container中障癌,等待container執(zhí)行凌外。

另外Connector有多種實(shí)現(xiàn),一個(gè)Tomcat容器中通常具有一個(gè)Connector組成的集合涛浙。

Container

Container包含一個(gè)責(zé)任鏈設(shè)計(jì)模式康辑,層層調(diào)用最終通過Servlet的包裝wrapper實(shí)現(xiàn)請求的調(diào)用。

Service與Server

Service是一個(gè)接口轿亮,負(fù)責(zé)管理Connector和Container疮薇。其標(biāo)準(zhǔn)實(shí)現(xiàn)類StandardService由Connector和Container組成。

Service接口同時(shí)也繼承了LifeCycle接口我注,方便對tomcat中各個(gè)組件的整體生命周期進(jìn)行管理按咒。

Server接口負(fù)責(zé)管理Tomcat中的Service集合。通過Server接口但骨,tomcat實(shí)現(xiàn)管理和運(yùn)行service励七,對外部暴露應(yīng)用。

二奔缠、Connector詳解

Connector的重要作用在于:接受請求掠抬,封裝請求和相應(yīng)對象,創(chuàng)建線程任務(wù)交給Container處理

Connector的信息可以在server.xml配置文件中看到校哎。明顯的可以看到8080是TCP連接端口两波,8009是Apache服務(wù)器和tomcat

通信使用的端口等。

Connector在server start時(shí)進(jìn)行初始化,之后等待請求到來雨女,通過httpProcessor包裝線程和請求對象谚攒,交給container處理。

流程如下圖所示:

請求處理時(shí)序圖

三氛堕、Container詳解

Tomcat容器中馏臭,Container實(shí)際上是用責(zé)任鏈設(shè)計(jì)模式。Container是所有容器的父接口讼稚,任何一種容器實(shí)現(xiàn)括儒。

它具有四個(gè)子容器:Engine,Host锐想,Context帮寻,Wrapper;四者成父子關(guān)系

Engine是整個(gè)tomcat容器的完整servlet引擎赠摇,通過它在最上層調(diào)用固逗;

Host代表Engine中的一個(gè)虛擬機(jī),這個(gè)Host的作用在于運(yùn)行多個(gè)應(yīng)用并區(qū)分它們(Context)藕帜;

Context是Servlet的基本運(yùn)行環(huán)境烫罩,它維護(hù)了servlet與url、絕對路徑的關(guān)系等洽故。每個(gè)應(yīng)用就是一個(gè)Context贝攒;

Wrapper是對Servlet原生對象的包裝,Wrapper便于對LifeCycle生命周期進(jìn)行管理

四时甚、lifecycle接口與生命周期

上面已經(jīng)講到隘弊,Tomcat中幾乎所有的接口都實(shí)現(xiàn)了LifeCycle接口,這也使得荒适,整個(gè)tomcat的啟動(dòng)和關(guān)閉過程中梨熙,可以直接

通過責(zé)任鏈設(shè)計(jì)模式Lifecycle接口實(shí)現(xiàn)對所有對象的生命周期管理。同時(shí)可以在各個(gè)子接口中實(shí)現(xiàn)自己的功能呢吻贿。

例如在server 的Start過程中可以解析默認(rèn)的server.xml文件串结,而container的start過程中會(huì)解析web.xml等。

在stop的時(shí)候舅列,container又可以處理服務(wù)器緩存的session肌割。將他們持久化 到磁盤上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帐要,一起剝皮案震驚了整個(gè)濱河市把敞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榨惠,老刑警劉巖奋早,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盛霎,死亡現(xiàn)場離奇詭異,居然都是意外死亡耽装,警方通過查閱死者的電腦和手機(jī)愤炸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掉奄,“玉大人规个,你說我怎么就攤上這事⌒战ǎ” “怎么了诞仓?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長速兔。 經(jīng)常有香客問我墅拭,道長,這世上最難降的妖魔是什么涣狗? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任谍婉,我火速辦了婚禮,結(jié)果婚禮上镀钓,老公的妹妹穿的比我還像新娘屡萤。我一直安慰自己,他們只是感情好掸宛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著招拙,像睡著了一般唧瘾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上别凤,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天饰序,我揣著相機(jī)與錄音,去河邊找鬼规哪。 笑死求豫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诉稍。 我是一名探鬼主播蝠嘉,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼杯巨!你這毒婦竟也來了蚤告?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤服爷,失蹤者是張志新(化名)和其女友劉穎杜恰,沒想到半個(gè)月后获诈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡心褐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年舔涎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逗爹。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亡嫌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桶至,到底是詐尸還是另有隱情昼伴,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布镣屹,位于F島的核電站圃郊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏女蜈。R本人自食惡果不足惜持舆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伪窖。 院中可真熱鬧逸寓,春花似錦、人聲如沸覆山。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簇宽。三九已至勋篓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魏割,已是汗流浹背譬嚣。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钞它,地道東北人拜银。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像遭垛,于是被迫代替她去往敵國和親尼桶。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容