? ? ? Tomcat 服務(wù)器是一個(gè)開源的輕量級(jí)Web應(yīng)用服務(wù)器,在中小型系統(tǒng)和并發(fā)量小的場(chǎng)合下被普遍使用,是開發(fā)和調(diào)試Servlet、JSP 程序的首選,相信任何一個(gè)java開發(fā)基本都有使用過。所以,作為一名java程序猿,學(xué)習(xí)tomcat源碼,是一件我們義不容辭的事。
今天我們這系列學(xué)習(xí)筆記,重點(diǎn)研究源碼對(duì)象事tomcat7的,源碼下載地址
http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.10/src/apache-tomcat-7.0.10-src.zip
大家可以下載一下,一起研究下tomcat的源碼,相信一定還是會(huì)讓你收獲頗豐的。
先大概說一下分析過程,源碼分析,我一般會(huì)先大體了解整個(gè)架構(gòu),然后從配置文件入手,項(xiàng)目如何啟動(dòng),項(xiàng)目如何運(yùn)行....等等,先看下大體結(jié)構(gòu)圖

tomcat的設(shè)計(jì)對(duì)領(lǐng)域模型概念控制的特別好,Server是最高的一層,下面可以包含了很多services,Connector用了處理用戶連接,然后封裝request和resposne調(diào)用container,這個(gè)模塊被分成endpoint(用于接收tcp/ip請(qǐng)求)、processor(用于將請(qǐng)求封裝成request)、adapator(用于適配找到對(duì)應(yīng)的container)。container作為容器,主要有三個(gè)孩子:engine、host、context(還有個(gè)Wrapper,封裝的是servlet層,相當(dāng)于每個(gè)servlet一個(gè)包裝),三個(gè)孩子都是container的子實(shí)現(xiàn)類。
如此,一個(gè)請(qǐng)求來了,先到了connnector,connnector將其封裝信息找到對(duì)應(yīng)engine,在進(jìn)一步找到host,最后進(jìn)入上下文context,找到對(duì)應(yīng)的處理類,看下簡(jiǎn)化的內(nèi)部結(jié)構(gòu)圖

簡(jiǎn)單
按照習(xí)慣,我們將從如下幾個(gè)維度分析
- tomcat 源碼分析技巧
- tomcat 啟動(dòng)腳本分析部分
- tomcat啟動(dòng)源碼分析(一)--入口代碼Bootstrap初始化
- tomcat啟動(dòng)源碼分析(二)--入口代碼calatina啟動(dòng)介紹
- tomcat啟動(dòng)源碼分析(三)--http請(qǐng)求nio處理
- tomcat啟動(dòng)源碼分析(四)--tomcat和jetty區(qū)別總結(jié)
下面,我們進(jìn)入第一個(gè)部分tomcat的啟動(dòng)腳本分析。。