先來(lái)介紹下tomcat 的目錄文件
bin 目錄:linux、windows的一些啟動(dòng)腳本,還有一些就是tomcat依賴的jar包,.sh是linux .bat是windows 。
conf目錄:這里就是配置文件的地方了,這里面我們可以看到一些熟悉的文件,比如context.xml、server.xml、web.xml文件。
lib目錄:tomcat依賴的一些jar
logs : 這個(gè)就肯定不用說(shuō)了,存放日志的地方
temp: 存放一些臨時(shí)文件
webapps: 這個(gè)我們就很熟悉,部署的時(shí)候 war、jar 放在里面就可以了啟動(dòng)就可以了。
work:這個(gè)是存運(yùn)行時(shí)放編譯后的class文件。
介紹完了目錄結(jié)構(gòu),我們可以來(lái)看看官方文檔
8.0文檔地址傳送門
server:這個(gè)沒(méi)什么說(shuō)的,tomcat服務(wù)器接口的實(shí)現(xiàn),代表整個(gè)容器
Service: 服務(wù)器內(nèi)部的中間組件,把多個(gè)引擎綁定在一起。
Engine: 上面提到的引擎,處理所有連接器所有的請(qǐng)求的管道,并且返回信息給客戶端。
Host:就是我們常用域名或者服務(wù)器的ip地址與tomcat相關(guān)聯(lián),一個(gè)Engine(引擎) 包含多個(gè)Host。
Connector:這個(gè)就是客戶端連接池,將tomcat連接到Apache HTTPD服務(wù)器等web服務(wù)器時(shí)使用的AJP協(xié)議的連接器。
Context:這個(gè)就是我們web項(xiàng)目。
說(shuō)完這些還是懵逼,這些東西到底是做什么的呢?
下面我找了張圖,我們結(jié)合圖來(lái)說(shuō)

我們可以看到,一個(gè)請(qǐng)求從客戶端過(guò)來(lái),首先tomcat容器肯定是要先初始化,
也就 是Server 初始化,然后就是Server的一些Listener、Resource、JNDI然后在
就Server下面的Service,Service里面的Connector。
看完上面的圖我們也只是知道了tomcat 處理請(qǐng)求的一些流程而已,圖中的一些組
件我們并不知道在哪里,還是有點(diǎn)懵,我們回過(guò)頭去看看 各個(gè)目錄里面的文件
(下面只研究conf目錄)
conf目錄解釋

我們看到這個(gè)里面對(duì)應(yīng)的是上面圖中的一些組件,可是service、connetor、
Engine、Host、Executor 這些組件我們還是沒(méi)有看到,再仔細(xì)看下這些組件都是包含在Server 里面的,我, 看下erver.xml的文件

上面圖片中的注釋我去掉了??梢钥吹竭@個(gè)里面的標(biāo)簽結(jié)構(gòu),圖中的組件是不是都對(duì)應(yīng)上了。
這個(gè)里提一下 這個(gè)web.xml文件時(shí)tomcat 默認(rèn)的。
我們?cè)倏纯?context.xml目錄

這個(gè)里面就是最后的conttext 組件。
結(jié)合圖片里的組件我們都了解完了,后面我們就去結(jié)合源碼研究下tomcat 的啟動(dòng)流程