/conf/server.xml文件中進行配置,每個Tomcat的組件在server.xml文件中對應一種配置元素.一下代碼以XML的形式展示" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Tomcat目錄結構及Tomcat Server處理一個http請

系統 1808 0

?

http://blog.sina.com.cn/s/blog_62cb15980101jh9x.html

?

1.Tomcat的結構概述

??? Tomcat服務器是由一系列可配置的組件構成,其核心組件是Catalina Servlet容器,它是所有其他Tomcat組件的頂層容器。Tomcat的組件可以在<CATALINA_HOME>/conf /server.xml文件中進行配置,每個Tomcat的組件在server.xml文件中對應一種配置元素.一下代碼以XML的形式展示了各種 Tomcat組件之間的關系:
<Server>
??? <Service>
???????? <Connector/>
???????? <Engine>
??????????? <Host>
??????????????? <Context>
??????????????? </Context>
??????????? </Host>
???????? </Engine>
??? </Service>
</Server>
??? 在以上XML代碼中,每個元素都代表一種Tomcat組件.這些元素分四類:
??? 1.頂層類元素??? 頂層類元素包括<Server>元素和<Service>元素,他們位于整個配置文件的頂層.
??? 2.連接器類元素??? 連接器類元素代表了介于客戶與服務之間的通信接口,負責將客戶的請求發送給服務器,并將服務器的響應結果傳遞給客戶.
??? 3.容器類元素??? 容器類元素代表處理客戶請求并生成響應結果的組件,有3種容器類元素,它們是Engine,Host和Context. Engine組件為特定的Service組件處理所有客戶請求,Host組件為特定的虛擬主機處理所有客戶請求,Context組件為特定的Web應用處理所有客戶請求.
??? 4.嵌套類元素??? 嵌套類元素代表了可以加入到容器中的組件,如<Logger>元素、<Valve>元素和<Realm>元素,這些元素將在后面的做介紹。
??? 下面,再對一些基本的Tomcat元素進行介紹。如果要了解這些元素,可以參考附錄A(Server.xml文件)。
???? <Server> 元素
??? 代表了整個Catalina Servlet容器,它是Tomcat實例的頂層元素.可包含一個或多個<Service>元素.
???? <Service> 元素
??? 包含一個<Engine>元素,以及一個或多個<Connector>元素,這些<Connector>元素共享同一個<Engine>元素.
???? <Connector> 元素
??? 代表和客戶程序實際交互的組件,他負責接收客戶請求,以及向客戶返回響應結果.
???? <Engine> 元素
??? 每個<Service>元素只能包含一個<Engine>元素. <Engine>元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求.
???? <Host> 元素
??? 一個<Engine>元素中可以包含多個<Host>元素.每個<Host>元素定義了一個虛擬主機,它可以包含一個或多個Web應用.
???? <Context> 元素
??? 每個<Context>元素代表了運行虛擬主機上的但個Web應用.一個<Host>元素中可以包含多個<Context>元素.
?
2. Tomcat的服務器配置文件server.xml
??? Tomcat服務器是由一系列可配置的組件構成,Tomcat的組件可以在<CATALINA_HOME>\conf\server.xml 文件中進行配置,每個Tomcat組件和server.xml文件中的一種配置元素對應.下面就一些常用的元素做了介紹.關于server.xml的更多 信息,可以參考Tomcat的文檔:
??? <CATALINA_HOME>/webapps/tomcat-docs/config/index.html
??? 下面是一個server.xml文件的樣例:
-----------------------------------------------------------------------------------
<!-- Example Server Configuration File -->
?
<Server ?port="8005" shutdown="SHUTDOWN" debug="0" >
?? <Service ?name="Catalina" >
???? <Connector ?port="8080"
?????????????? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?????????????? enableLookups="false" redirectPort="8443" acceptCount="100"
?????????????? debug="0" connectionTimeout="20000"?
?????????????? disableUploadTimeout="true"? />?
???? <Engine ?name="Catalina" defaultHost="localhost" debug="0" > ?
????? ? <Logger ?className="org.apache.catalina.logger.FileLogger"
????????????? prefix="catalina_log." suffix=".txt"
????????????? timestamp="true" /> ?
????? ? <Realm ?className="org.apache.catalina.realm.MemoryRealm" /> ?
????? ? <Host ?name="localhost" debug="0" appBase="webapps"
??????????? ?unpackWARs="true" >
???????????????????????????
??????????? <Valve ?className="org.apache.catalina.valves.AccessLogValve"
??????????????????directory="logs" prefix="localhost_access_log." suffix=".txt"
??????????????????pattern="common" resolveHosts="false" />?
??????????? <Logger ?className="org.apache.catalina.logger.FileLogger"
????????????????
?? directory="logs"? prefix="localhost_log." suffix=".txt"
??????????????? ?? timestamp="true" />? ??????
??????????????? <Context ?path="/sample" docBase="sample" debug="0" reloadable="true" > ???????????????????????????
??????????????????? <Resource ?name="jdbc/BookDB"?
?????????????????????????????auth="Container"
?????????????????????????????type="javax.sql.DataSource" /> ??????????????????????????????????
??????????????????? <ResourceParams ?name="jdbc/BookDB" >? ?????????????????????????????????
???????????????????????? <parameter>
?????????????????????????????<name>
factory </name>
?????????????????????????????<vlaue>
org.apache.commons.dbcp.BasicDataSourceFactory </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
maxActive </name>
?????????????????????????????<value>
100 </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
maxIdle </name>
?????????????????????????????<value>
30 </value>
????????????????????????</parameter>????????????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
maxWait </name>
?????????????????????????????<value>
10000 </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
username </name>
?????????????????????????????<value>
dbuser </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
password </name>
?????????????????????????????<value>
1234 </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????<name>
driverClassName </name>
?????????????????????????????<value>
com.mysql.jdbc.Driver </value>
????????????????????????</parameter>?????????????????????????????????????????
????????????????????????<parameter>
?????????????????????????????
<name> url </name>

?????????????????????????????<value>
jdbc:mysql://localhost:3306/BookDB?autoReconnect=true </value>
???????????????????????? </parameter>?????????????????????????????????????????
??????????????????</ResourceParams>??????????????????????????????????
??????????????</Context>???????????????????????????
??????????</Host>????????????????????
??????</Engine>?????????????
??</Service>???
??<Service ?name="Apache" >
??????<Connector ?prot="8009"
?????????????????enableLookups="false" redirectPort"8443" debug="0"
?????????????????protocol="AJP/1.3" />???????????????????????????
??????<Engine ?name="Apache" defaultHost="localhost" debug="0" >???????????????????????
??????????<Logger ?className="org.apache.catalina.logger.FileLogger"
??????????????????prefix="apache_log." suffix=".txt"
??????????????????timestamp="true" />??????????????????????????????????
??????????<Realm ?className="org.apache.catalina.realm.MemoryRealm" />????????????????????
??????</Engine>?
? </Service>
</Server>
-----------------------------------
下面,對基本的 Tomcat 元素逐一介紹。 ?
1.? 配置Server 元素

?? <Server>
元 素代表了整個Catalina Servler容器,它是Tomcat實例的頂層元素,由org.apache.catalina.Server接口來定 義.<Server>元素中可以包含一個或者多個<Service>元素,但<Server>元素不能作為任何其他 元素的子元素.范例代碼中定義的<Server>元素如下 :
???? <Server ?port="8005" shutdown="SHUTDOWN" debug="0" >
???? <Server>屬性含義:
--------------------------------------------------------------
??? className? :指定實現org.apache.catalina.Server接口的類,默認值為org.apache.catalina.core.StandardServer.
??? port?????? :指定Tomcat服務器監聽shutdown命令的端口.終止Tomcat服務運行時,必須在Tomcat服務器所在的機器上發出Shutdown命令.該屬性是必須設定的.
??? shutdown?? :指定終止Tomcat服務器運行時,發給Tomcat服務器的shutdown監聽端口的字符串.該屬性是必須設定的.
2. 配置Service元素

??? <Service>元素由org.apache.catalina.Service接口定義,它把韓一個<Engine>元素, 以及一個或多個<Connector>元素,這些<Connector>元素共享一個<Engine>元素. 例如,在范例文件中配置了兩個<Service>元素

? ?? <Service ?name="Catalina" >
?
?name="Apache" >
???? 第一個<Service>處理所有直接由Tomcat服務器接收的Web客戶請求,第二個<Service>處理由Apache服務器轉發過來的Web客戶請求.

? ?<Service
???? <Service> 屬性含義:
--------------------------------------------------------------
??? className? :指定實現org.apache.catalina.Service接口的類,默認值為org.apache.catalina.core.StandardService.
??? name?????? :定義Service的名字.
3. 配置Engine元素

??? <Engine>元素由org.apahe.catalina.Engine接口定義. 每個<Service>元素只能包括一個<Engine>元素. <Engine>元素處理在同一個<Service>中所有<Connector>元素接收到的客戶請求. 例如,在范例server.xml文件中配置了一下的<Engine>元素:

???? <Engine ?name="Catalina" defaultHost="localhost" debug="0" > ?

???? <Engine>屬性含義:
--------------------------------------------------------------
??? className? :指定實現org.apache.catalina.Engine接口的類,默認值為org.apache.catalina.core.StandardEngine.
??? name?????? :定義Engine的名字.

??? 在<Engine>元素中可以包含如下的子元素:
??????? <Logger>
??????? <Realm>
??????? <Valve>
??????? <Host>
4. 配置Host元素

??? <Host>元素由org.apache.catalina.Host接口定義.一個<Engine>元素可以包含多個<Host>元素.每個<Host>元素定義了一個虛擬主機,它可以包含一個或多個Web應用. 例如,在樣例server.xml中配置了以下<Host>元素:

????? ? <Host ?name="localhost" debug="0" appBase="webapps"
??????????? ?unpackWARs="true" >
?

??? 以上代碼定義了一個名為localhost的虛擬主機,Web客戶訪問它的URL為:? http://localhost:8080/

???? <Host >屬性含義:
--------------------------------------------------------------
??? className??? :指定實現org.apache.catalina.
Host 接口的類,默認值為org.apache.catalina.core.Standard Host .
??? appBase????? :指定虛擬主機的目錄,可以指定絕對目錄,也可以指定相對于<CATALINA_HOME>的相對目錄. 如果此項沒有設定,默認值為<CATALINA_HOME>/webapps.
??? unpackWARs?? :如果此項設為true,表示將把Web應用的WAR文件先展開為開放目錄結構后再運行.如果設為false,將直接運行WAR文件.
??? autoDeploy?? :如果此項設為true,表示當Tomcat服務器處于運行狀態時,能夠監測appBase下的文件,如果有新的Web應用加入進來,會自動發布這個Web應用.
??? alias??????? :指定虛擬主機的別名,可以指定多個別名.
??? deployOnStartup :如果此項設為true,表示Tomcat服務器啟動時會自動發布appBase目錄下的所有Web應用,如果Web應用在server.xml中沒有相應的<Context>元素,將采用Tomcat默認的Context. deployOnStartup的默認值為true.
??? name???????? :定義虛擬主機的名字.}

??? 在<Host>元素中可以包含如下的子元素:
??????? <Logger>
??????? <Realm>
??????? <Valve>
??????? <Context>
5. 配置Context元素

????
<Context>元素由org.apache.catalina.Context接口定義. <Context>元素是使用最頻繁的元素. 每個<Context>元素代表了運行在虛擬主機上的單個Web應用. 一個<Host>元素中可以包含多個<Context>元素. 例如, 在樣例server.xml文件中配置了以下<Context>元素:

??????????????? <Context ?path="/sample" docBase="sample" debug="0" reloadable="true" >
???

???? < Context>屬性含義:
--------------------------------------------------------------
??? className?? :指定實現org.apache.catalina.Context接口的類,默認值為org.apache.catalina.core.StandardContext.
??? path??????? :指定訪問該Web應用的URL入口.
??? docBase???? :指定Web應用的文件路徑.可以給定絕對路徑,也可以給定相對于Host的appBase屬性的相對路徑. 如果Web應用采用開放目錄結構,那就指定Web應用的根目錄;如果Web應用是個WAR文件,那就指定WAR文件的路徑.
??? reloadable? :如果這個屬性設為true,Tomcat服務器在運行狀態下會監視在WEB-INF/class和WEB-INF/lib目錄下CLASS文件的改動.如果檢測到有calss文件被更新,服務器會自動重新加載Web應用.
??? cookies???? :指定是否通過Cookie來支持Session,默認為true.
??? useNaming?? :指定是否支持JNDI,默認為true.

??? 在<Context>元素中可以包含如下的子元素:
??????? <Logger>
??????? <Realm>
??????? <Valve>
??????? <Resource>
??????? <ResourceParams>
6. 配置Connector元素

??? <Connector>元素由org.apache.catalina.Connector接口定義.<Connector>元素代表與客戶程序實際交互的組件,它負責接收客戶的請求,以及向客戶返回響應結果.例如, 在樣例server.xml文件中配置了兩個<Connector>元素:

????

????? ?prot="8009"
?????????????????enableLookups="false" redirectPort"8443" debug="0"
???????????????? protocol="AJP/1.3" />??????

??? 第一個<Connector>元素定義了一個HTTP Connector,它通過8080端口接收HTTP請求;
??? 第二個<Connector>元素定義了一個JK Connector,它通過8009端口接收由其他HTTP服務器(如Apache服務器)轉發過來的客戶請求.

????
所有的<Connector>元素都具有一些共同的屬性,這些屬性如下:?<Connector ? <Connector ?port="8080"
??????????????? ?maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?????????????? ? enableLookups="false" redirectPort="8443" acceptCount="100"
?????????????? ? debug="0" connectionTimeout="20000"?
?????????????? ? disableUploadTimeout="true"? />?
??? < Connector>屬性含義(共同屬性):
--------------------------------------------------------------
??? className????? :指定實現org.apache.catalina.
Connector ? 接口的類,默認值為org.apache.catalina.core.Standard Connector .
??? enableLookups? :如果設為true,表示支持域名解析,可以把IP地址解析為主機名.Web應用調用request.getRemostHost方法將返回客戶的主機名.該屬性默認值為true.
??? redirectPort?? :指定轉發端口.如果當前端口只支持non-SSL請求,在需要安全通信的場合,將把客戶請求轉發到基于SSL的redirectPort的端口.

??? HttpConnector的屬性描述如下:
--------------------------------------------------------------
??? calssName????? :指定實現org.apache.catalina.Connector接口的類,默認值為org.apache.coyote.tomcat5.CoyoteConnector.
??? enableLookups? :同上.
??? redirectPort?? :同上.
??? prot?????????? :設定TCP/IP斷口號,默認為8080.
??? address??????? :如果服務器有兩個以上IP地址,該屬性可以設定端口監聽的IP地址,默認情況下,端口會監聽服務器上所有IP地址.
??? bufferSize???? :設定由端口創建的輸入流的緩存大小,默認值為2048byte.
??? protocol?????? :設定HTTP協議,默認值為HTTP/1.1.
??? maxThreads???? :設定處理客戶請求的線程的最大數目,這個值也決定了服務器可以同時響應客戶請求的最大數目,默認值為200.
??? acceptCount??? :設定在監聽端口隊列中的最大客戶請求數,默認值為10. 如果隊列已滿,客戶請求將被拒絕.
??? connectionTimeout :定義建立客戶連接超時的時間,以毫秒為單位.如果設置為-1,表示不限制建立客戶連接的時間.

??? JK Connector 的屬性如下:
--------------------------------------------------------------
??? className????? :指定實現org.apache.catalina.Connector接口的類,默認值為org.apache.coyote.tomact5.CoyoteCnnector.
??? enableLookups? :同上.
??? redirectPort?? :同上.
??? port?????????? :設定AJP端口號.
??? protocol?????? :必須設定為AJP/1.3協議

一個<Server>包含一個或多個<Service>,一個<Service>包含唯一一個<Engine>和一個或多個<Connector>,多個?<Connector>共享一個<Engine>;一個<Engine>包含多個<Host>,每個<Host>定義一個虛擬主機,包含一個或多個web應用<Context>;?<Context>元素是代表一個在虛擬主機上運行的Web應用

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

1) 請求被發送到本機端口8080,被在那里偵聽的Coyote HTTP/1.1 Connector獲得
2) Connector把該請求交給它所在的Service的Engine來處理,并等待來自Engine的回應
3) Engine獲得請求localhost/wsota/wsota_index.jsp,匹配它所擁有的所有虛擬主機Host
4) Engine匹配到名為localhost的Host(即使匹配不到也把請求交給該Host處理,因為該Host被定義為該Engine的默認主機)
5) localhost Host獲得請求/wsota/wsota_index.jsp,匹配它所擁有的所有Context
6) Host匹配到路徑為/wsota的Context(如果匹配不到就把該請求交給路徑名為""的Context去處理)
7) path="/wsota"的Context獲得請求/wsota_index.jsp,在它的mapping table中尋找對應的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對象返回給客戶browser

原文網址: http://www.360doc.com/content/08/0820/09/72742_1558551.shtml

Tomcat目錄結構及Tomcat Server處理一個http請求的過程


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 1000部羞羞禁止免费观看视频 | 日日夜夜操天天干 | 国产成人夜间影院在线观看 | 99精品全国免费7观看视频 | 欧美日韩顶级毛片www免费看 | 欧美一级精品 | 夜夜操天天插 | 麻豆视频一区 | 日本在线毛片视频免费看 | 国产日产综合 | 特级黄色毛片视频 | 亚洲伊人精品 | 国产视频中文字幕 | 91亚洲影院 | 国产精品久久久久久久久久日本 | 精品国产亚一区二区三区 | 欧美特欧美特级一片 | 久草在线视频中文 | 欧美成人免费mv在线播放 | 亭亭色| 成人免费视频视频在线不卡 | 亚洲无线码一区在线观看 | 欧美乱淫视频 | 国产永久免费爽视频在线 | 亚洲欧美中文字幕 | 99热99re8国产在线播放 | 最新日本一级中文字幕 | 狠狠色狠狠色综合网 | 九九精品免视看国产成人 | 久久综合偷偷噜噜噜色 | 欧美色88| 夜夜骚视频 | 日韩 欧美 亚洲国产 | 就去色综合| 午夜亚洲| 成人免费网站久久久 | 看黄色免费网站 | 亚洲qingse中文字幕久久 | 日韩欧美视频免费观看 | 97人人插 | 老司机午夜在线视频免费观 |