Tomcat 是由 Apache 軟件基金會(huì)下屬的 Jakarta 項(xiàng)目開(kāi)發(fā)的一個(gè) Servlet 容器,按照 Sun Microsystems 提供的技術(shù)規(guī)范開(kāi)發(fā)出來(lái),Tomcat 8 實(shí)現(xiàn)了對(duì) Servlet 3.1 和 JavaServer Page 2.3(JSP)的支持,并提供了作為 Web 服務(wù)器的一些特有功能,如 Tomcat 管理和控制平臺(tái)、安全域管理和 Tomcat 附加組件等。
對(duì)于管理員和Web開(kāi)發(fā)人員來(lái)說(shuō),在開(kāi)始之前使用一個(gè)應(yīng)用服務(wù)器之前,您應(yīng)該熟悉一些重要的信息。本文檔提供關(guān)于Tomcat的基礎(chǔ)操作教程,看完之后應(yīng)該會(huì)對(duì)您有所幫助。
Tomcat主要組件:服務(wù)器Server,服務(wù)Service,連接器Connector、容器Container。連接器Connector和容器Container是Tomcat的核心。
一個(gè)Container容器和一個(gè)或多個(gè)Connector組合在一起,加上其他一些支持的組件共同組成一個(gè)Service服務(wù),有了Service服務(wù)便可以對(duì)外提供能力了,但是Service服務(wù)的生存需要一個(gè)環(huán)境,這個(gè)環(huán)境便是Server,Server組件為Service服務(wù)的正常使用提供了生存環(huán)境,Server組件可以同時(shí)管理一個(gè)或多個(gè)Service服務(wù)。
1、Connector
一個(gè)Connecter將在某個(gè)指定的端口上偵聽(tīng)客戶請(qǐng)求,接收瀏覽器的發(fā)過(guò)來(lái)的 tcp 連接請(qǐng)求,創(chuàng)建一個(gè) Request 和 Response 對(duì)象分別用于和請(qǐng)求端交換數(shù)據(jù),然后會(huì)產(chǎn)生一個(gè)線程來(lái)處理這個(gè)請(qǐng)求并把產(chǎn)生的 Request 和 Response 對(duì)象傳給處理Engine(Container中的一部分),從Engine出獲得響應(yīng)并返回客戶。 Tomcat中有兩個(gè)經(jīng)典的Connector,一個(gè)直接偵聽(tīng)來(lái)自Browser的HTTP請(qǐng)求,另外一個(gè)來(lái)自其他的WebServer請(qǐng)求。HTTP/1.1 Connector在端口8080處偵聽(tīng)來(lái)自客戶Browser的HTTP請(qǐng)求,AJP/1.3 Connector在端口8009處偵聽(tīng)其他Web Server(其他的HTTP服務(wù)器)的Servlet/JSP請(qǐng)求。 Connector 最重要的功能就是接收連接請(qǐng)求然后分配線程讓 Container 來(lái)處理這個(gè)請(qǐng)求,所以這必然是多線程的,多線程的處理是 Connector 設(shè)計(jì)的核心。
2、Container
Container是容器的父接口,該容器的設(shè)計(jì)用的是典型的責(zé)任鏈的設(shè)計(jì)模式,它由四個(gè)子容器組件構(gòu)成,分別是Engine、Host、Context、Wrapper。這四個(gè)組件是負(fù)責(zé)關(guān)系,存在包含關(guān)系。通常一個(gè)Servlet class對(duì)應(yīng)一個(gè)Wrapper,如果有多個(gè)Servlet定義多個(gè)Wrapper,如果有多個(gè)Wrapper就要定義一個(gè)更高的Container,如Context。 Context 還可以定義在父容器 Host 中,Host 不是必須的,但是要運(yùn)行 war 程序,就必須要 Host,因?yàn)?war 中必有 web.xml 文件,這個(gè)文件的解析就需要 Host 了,如果要有多個(gè) Host 就要定義一個(gè) top 容器 Engine 了。而 Engine 沒(méi)有父容器了,一個(gè) Engine 代表一個(gè)完整的 Servlet 引擎。
Tomcat 還有其它重要的組件,如安全組件 security、logger 日志組件、session、mbeans、naming 等其它組件。這些組件共同為 Connector 和 Container 提供必要的服務(wù)。