tomcat_server.xml配置說明

來源:互聯網
上載者:User

標籤:瀏覽器   伺服器   設定檔   用戶端   連接器   tomcat_server.xml配置說明   

tomcat_server.xml配置說明



1.1 Server

Server代表整個Catalina servlet容器。在server.xml設定檔中必須是頂層元素且唯一,給它配置的屬性代表整個容器的屬性。




1.2 Service

Service是這樣一個集合:它由一個或者多個Connector,以及一個共用的處理引擎(Engine)組成。Engine負責處理所有Connector所獲得的客戶請求。




1.3 Connector

一個連接器(Connector)將在某個指定連接埠上偵聽客戶請求,並將獲得的請求交給Engine來處理,從Engine處獲得響應結果,並返回給用戶端。其protocal屬性制定了該連接埠偵聽的協議類型。

Tomcat有兩個典型的連接器,一個直接偵聽來自用戶端瀏覽器的http請求,一個偵聽來自其它Web伺服器的請求。

Coyote Http/1.1 Connector 在連接埠8080處偵聽來自客戶瀏覽器的http請求,Coyote JK2 Connector 在連接埠8009處偵聽來自其它Web伺服器(比如Apache)的servlet/jsp代理請求。當使用Coyote Http/1.1 Connector時,Tomcat作為獨立的Web容器,同時扮演Web伺服器和Servlet容器的雙重角色。當使用Coyote JK2 Connector時,Tomcat只扮演Servlet容器的角色,Web伺服器則由Apache或者其他伺服器來提供,由於這些專有的Web伺服器在處理靜態資源的效能和效率上要比Tomcat提供的Web伺服器要好,所以很多人將Tomcat和Apache配合使用。




1.4 Engine

處理引擎(Engine)代表一個Service所屬的請求處理機,它接受所有連接器傳遞過來的用戶端請求,將處理結果返回給連接器,由連接器將最終響應返回給用戶端。Engine必須配置在Service組件下。處理引擎下可以配置多個虛擬機器主機(Virtual Host),每個虛擬機器主機都有一個網域名稱。當處理引擎獲得一個請求時,它把該請求匹配到某個虛擬機器主機上,把請求交給該虛擬機器主機來處理。處理引擎有一個預設虛擬機器主機,當請求無法匹配到任何一個虛擬機器主機上時,交給預設虛擬機器主機來處理。




1.5 Host

代表一個虛擬機器主機,節點代碼如:

<Host name="localhost" appBase="webapps" unpackWARs="true" xmlValidation="false" xmlNamespaceAware="false"> 

</Host>

其name是虛擬機器主機的名字,appBase是虛擬機器主機指向的目錄,Tomcat啟動時,會自動載入appBase下的應用。unpackWARs表示是否自動解壓縮appBase下已打成WAR包的應用,autoDeploy表示在伺服器啟動並執行時候,將一個應用放入appBase下,是否自動部署。


每個虛擬機器主機和某個網路網域名稱(Domain Name)相匹配。每個虛擬機器主機下都可以部署(deploy)一個或者多個Web應用程式(Web Application),每個Web應用程式對應於一個Context,有一個Context path。當虛擬機器主機獲得一個請求時,將把該請求匹配到某個Context上,然後把該請求交給該Context來處理。匹配的方法是“最長相符”,一個path=""的Context將成為該虛擬機器主機的預設Context。所有無法和其它Context的路徑名匹配的請求都將最終和該預設Context匹配。

在許多情況下,系統管理員希望將多個網路網域名稱綁定到同一個虛擬機器主機,這就需要使用“主機別名”技術來實現。




1.6 Context

一個Context對應於一個Web應用程式,一個Web應用程式由一個或者多個Servlet組成。Context在建立的時候將根據設定檔$CATALINA_HOME/conf/web.xml和$WebApp /Web-INF/web.xml載入Servlet類。當Context獲得請求時,將在自己的映射表(mapping table)中尋找相匹配的Servlet類。如果找到,則執行該類,獲得請求的響應,並返回。







2 【Tomcat Server處理一個http請求的過程】原理


假設來自客戶的請求為:http://localhost:8080/macy/index.jsp

1) 請求發送到本機連接埠8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得。

2) Connector把該請求交給它所在Service的Engine來處理,並等待來自Engine的響應。

3) Engine獲得請求localhost/macy/index.jsp,匹配它所擁有的所有虛擬機器主機Host。

4) Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的預設虛擬機器主機)。

5) localhost Host獲得請求/macy/index.jsp,匹配它所擁有的所有Context。

6) Host匹配到路徑為/macy的Context(如果匹配不到就把該請求交給路徑名為""的Context去處理)。

7) path="/macy"的Context獲得請求/index.jsp,在它的映射表中尋找對應的servlet。

8) Context匹配到URL PATTERN為*.jsp的servlet,對應於JspServlet類。

9) 構造HttpServletRequest對象和HttpServletResponse對象,作為參數調用JspServlet的doGet或doPost方法。

10)Context把執行完了之後的HttpServletResponse對象返回給Host。

11)Host把HttpServletResponse對象返回給Engine。

12)Engine把HttpServletResponse對象返回給Connector。

13)Connector把HttpServletResponse對象返回給用戶端瀏覽器。






3【介紹一種把應用從設定檔Server.xml獨立出來的方法】


Server.xml中可以配置部署應用需要的所有資訊,從Tomcat5開始,應用配置可以從Server.xml獨立出來,這也是Tomcat現在所推薦的配置方式,帶來的一個好處,顯而易見,更容易維護了。另一個好處,是在Servler.xml的修改,只能通過重啟Tomcat 才能發生作用,分拆後,修改完成,可以不用重啟Tomcat就發生作用。

應用的獨立設定檔應該配置在路徑$TOMCAT\conf\engineName\hostName\下,其中engineName是應用所在的 Engine的名字,對於本例而言是Catalina,hostName是應用所在的虛擬機器主機的名字,本例為localhost。設定檔的名字是這樣約定的:如果訪問路徑就在虛擬機器主機下,那麼名字為ROOT,如:ROOT.xml,其他情況下,檔案名稱就是訪問路徑,不過需要用#替換路徑中的/。本例中訪問路徑為/struts,相應的檔案名稱是struts.xml,內容如下:

<Context docBase="C:/WAP/struts" reloadable="true"/>

其中docBase指定應用所在的目錄,如果是相對目錄,對應的就是虛擬機器主機下appBase的目錄,也可以是絕對目錄,這個時候應用在什麼地方都可以。reloadable表示是否支援熱部署,比如class更新,如果reloadable為true,應用會重新部署。注意:在分拆後, Context的path屬性將不再起作用,這是Tomcat6和之前的版本不同的地方。

以上配置完成,我們就可以訪問應用了,訪問地址是http://localhost:8080/struts



下面介紹資源的配置


這裡指的主要是資料來源的配置。Tomcat6使用的是DBCP資料來源,它的配置方式如下:

<Resource name="jdbc/test" auth="Application" type="javax.sql.DataSource" maxActive="100"

maxIdle="30" maxWait="10000" username="sa" password="123456" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"

url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test"/>

它可以直接配置在Context元素下,這時資料來源就只有他所屬的應用能夠訪問。如果需要所有的應用能夠訪問,可以配置在$TOMCAT\conf\context.xml中,直接配置下根項目下即可。這個檔案在啟動tomcat的時候,所有的應用都會載入。

如果需要節省資源,共用同一個資料來源,可以配置在Server.xml的GlobalNamingResources節點下,在應用中可以通過別名訪問,提供別名的方式是在應用所在的元素下添加如下的子項目,例:

<ResouceLink name="jdbc/test2" global="jdbc/test" type="javax.sql.DataSource"/>

name就是別名,global是在GlobalNamingResources所定義的資源


本文出自 “·`米笵6” 部落格,請務必保留此出處http://mifan6.blog.51cto.com/9954601/1713295

tomcat_server.xml配置說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.