Tomcat 教程


閱讀(270.8k) 收藏 (177)

手冊(cè)簡(jiǎn)介

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 附加組件等。

手冊(cè)說(shuō)明

對(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 引擎。

  • Engine 容器比較簡(jiǎn)單,它只定義了一些基本的關(guān)聯(lián)關(guān)系。
  • Host 容器是 Engine 的子容器,一個(gè) Host 在 Engine 中代表一個(gè)虛擬主機(jī),這個(gè)虛擬主機(jī)的作用就是運(yùn)行多個(gè)應(yīng)用,它負(fù)責(zé)安裝和展開(kāi)這些應(yīng)用,并且標(biāo)識(shí)這個(gè)應(yīng)用以便能夠區(qū)分它們。它的子容器通常是 Context,它除了關(guān)聯(lián)子容器外,還有就是保存一個(gè)主機(jī)應(yīng)該有的信息。
  • Context 容器代表 Servlet 的 Context,它具備了 Servlet 運(yùn)行的基本環(huán)境,理論上只要有 Context 就能運(yùn)行 Servlet 了。簡(jiǎn)單的 Tomcat 可以沒(méi)有 Engine 和 Host。Context 最重要的功能就是管理它里面的 Servlet 實(shí)例,Servlet 實(shí)例在 Context 中是以 Wrapper 出現(xiàn)的,還有一點(diǎn)就是 Context 如何才能找到正確的 Servlet 來(lái)執(zhí)行它呢? Tomcat5 以前是通過(guò)一個(gè) Mapper 類來(lái)管理的,Tomcat5 以后這個(gè)功能被移到了 request 中,在前面的時(shí)序圖中就可以發(fā)現(xiàn)獲取子容器都是通過(guò) request 來(lái)分配的。
  • Wrapper 容器代表一個(gè) Servlet,它負(fù)責(zé)管理一個(gè) Servlet,包括的 Servlet 的裝載、初始化、執(zhí)行以及資源回收。Wrapper 是最底層的容器,它沒(méi)有子容器了,所以調(diào)用它的 addChild 將會(huì)報(bào)錯(cuò)。 Wrapper 的實(shí)現(xiàn)類是 StandardWrapper,StandardWrapper 還實(shí)現(xiàn)了擁有一個(gè) Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper 將直接和 Servlet 的各種信息打交道。

其他組件

    Tomcat 還有其它重要的組件,如安全組件 security、logger 日志組件、session、mbeans、naming 等其它組件。這些組件共同為 Connector 和 Container 提供必要的服務(wù)。




在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)