標籤:瀏覽器 伺服器 設定檔 用戶端 連接器 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配置說明