Tomcat 教程


閱讀(273.6k) 收藏 (177)

手冊簡介

Tomcat 是由 Apache 軟件基金會下屬的 Jakarta 項目開發(fā)的一個 Servlet 容器,按照 Sun Microsystems 提供的技術(shù)規(guī)范開發(fā)出來,Tomcat 8 實現(xiàn)了對 Servlet 3.1 和 JavaServer Page 2.3(JSP)的支持,并提供了作為 Web 服務(wù)器的一些特有功能,如 Tomcat 管理和控制平臺、安全域管理和 Tomcat 附加組件等。

手冊說明

對于管理員和Web開發(fā)人員來說,在開始之前使用一個應(yīng)用服務(wù)器之前,您應(yīng)該熟悉一些重要的信息。本文檔提供關(guān)于Tomcat的基礎(chǔ)操作教程,看完之后應(yīng)該會對您有所幫助。

原理:

Tomcat主要組件:服務(wù)器Server,服務(wù)Service,連接器Connector、容器Container。連接器Connector和容器Container是Tomcat的核心。

一個Container容器和一個或多個Connector組合在一起,加上其他一些支持的組件共同組成一個Service服務(wù),有了Service服務(wù)便可以對外提供能力了,但是Service服務(wù)的生存需要一個環(huán)境,這個環(huán)境便是Server,Server組件為Service服務(wù)的正常使用提供了生存環(huán)境,Server組件可以同時管理一個或多個Service服務(wù)。

兩大組件:

1、Connector

    一個Connecter將在某個指定的端口上偵聽客戶請求,接收瀏覽器的發(fā)過來的 tcp 連接請求,創(chuàng)建一個 Request 和 Response 對象分別用于和請求端交換數(shù)據(jù),然后會產(chǎn)生一個線程來處理這個請求并把產(chǎn)生的 Request 和 Response 對象傳給處理Engine(Container中的一部分),從Engine出獲得響應(yīng)并返回客戶。 Tomcat中有兩個經(jīng)典的Connector,一個直接偵聽來自Browser的HTTP請求,另外一個來自其他的WebServer請求。HTTP/1.1 Connector在端口8080處偵聽來自客戶Browser的HTTP請求,AJP/1.3 Connector在端口8009處偵聽其他Web Server(其他的HTTP服務(wù)器)的Servlet/JSP請求。 Connector 最重要的功能就是接收連接請求然后分配線程讓 Container 來處理這個請求,所以這必然是多線程的,多線程的處理是 Connector 設(shè)計的核心。

2、Container

Container是容器的父接口,該容器的設(shè)計用的是典型的責(zé)任鏈的設(shè)計模式,它由四個子容器組件構(gòu)成,分別是Engine、Host、Context、Wrapper。這四個組件是負(fù)責(zé)關(guān)系,存在包含關(guān)系。通常一個Servlet class對應(yīng)一個Wrapper,如果有多個Servlet定義多個Wrapper,如果有多個Wrapper就要定義一個更高的Container,如Context。 Context 還可以定義在父容器 Host 中,Host 不是必須的,但是要運行 war 程序,就必須要 Host,因為 war 中必有 web.xml 文件,這個文件的解析就需要 Host 了,如果要有多個 Host 就要定義一個 top 容器 Engine 了。而 Engine 沒有父容器了,一個 Engine 代表一個完整的 Servlet 引擎。

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

其他組件

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




在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號