Tomcat目錄結構及Tomcat Server處理一個http請求的過程
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>元素.
- Tomcat的伺服器配置檔案server.xml
Tomcat伺服器是由一系列可配置的元件構成,Tomcat的元件可以在\conf\server.xml檔案中進行配置,每個Tomcat元件和server.xml檔案中的一種配置元素對應.下面就一些常用的元素做了介紹.關於server.xml的更多資訊,可以參考Tomcat的文件:
/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.StandardHost.
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.StandardConnector.
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
相關推薦
Tomcat目錄結構及Tomcat Server處理一個http請求的過程
1.Tomcat的結構概述 Tomcat伺服器是由一系列可配置的元件構成,其核心元件是Catalina Servlet容器,它是所有其他Tomcat元件的頂層容器。Tomcat的元件可以在< CATALINA_HOME>/conf/serv
Tomcat Server處理一個http請求的過程
查詢資料的時候先這個,有點用,摘錄下來 假設來自客戶的請求為: http://localhost:8080/wsota/wsota_index.jsp 1) 請求被髮送到本機埠8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得 2) Conn
網站開發進階(四)Tomcat Server處理一個http請求的過程
Tomcat Server處理一個http請求的過程 假設來自客戶的請求為: http://localhost:8080/wsota/wsota_index.jsp 1) 請求被髮送到本機埠8080,被在那裡偵聽的Coyote HTTP/1.1 Connector獲得
tomcat目錄結構及配置檔案說明
啟動關閉tomcat 需要先配置JAVA_HOME 雙擊%CATALANA_HOME%\bin\startup.bat 雙擊%CATALANA_HOME%\bin\shutdown.bat
Tomcat處理一個HTTP請求的過程
一、Tomcat的組成 (1)Server伺服器元素代表整個catalina servlet容器。是單例模式。 (2)ServiceService是這樣一個集合:它由一個或者多個Connector組成,以及一個Engine,負責處理所有Connector所獲得的客戶請求。
Tomcat伺服器處理一個http請求的過程
Tomcat容器就是一個Servlet,理解Servlet的執行過程。 (1)請求被髮送到本機埠8080,被在那裡監聽的Coyoto Http/1.1 Connector獲得。 (2)Connector把該請求交給它所在的Service的Engine
Tomcat如何處理一個HTTP請求的過程?
Tomcat是一個基於元件的伺服器,它的構成元件都是可配置的,Tomcat的各個元件是在<TOMCAT_HOME>\conf\server.xml檔案中配置的。 server.xml檔案的基本組成結構如下: <Server>
容器完整處理一個http請求的過程
初學java web的朋友們應該都知道tomcat容器,但是tomcat是如何完成一次http請求的過程,這裡做一個記錄。 當用戶在客戶端點選一個連結,該連結的URL指向一個servlet,經過網路轉發到應用所在的web伺服器的,此時web伺服器不是直接把申請發給servlet本身,而是傳送給部署該s
SpringMVC:處理一個http請求的完整過程
SpringMVC是一個基於DispatcherServlet的MVC框架,每一個請求最先訪問的都是DispatcherServlet,DispatcherServlet負責轉發每一個Request請求給相應的Handler,Handler處理以後再返回相
tomcat原始碼解析第6課-一次http請求過程
目錄 1、啟動8080埠監聽http請求時序圖 2、啟動8080埠監聽http請求程式碼解析 3、http請求時序圖 4、http請求request和response的封裝 5、查詢自定義過濾器和servlet 6、自定義的過濾器和servlet呼叫 一、啟
nginx 如何處理一個HTTP請求
基於名字的虛擬主機 Nginx首先選定由哪一個虛擬主機來處理請求。讓我們從一個簡單的配置(其中全部3個虛擬主機都在埠*:80上監聽)開始: server { listen 80; server_name example.org www.exa
tomcat 的目錄結構及修改端口號
應用 out proto emp tomcat 新的 啟動tomcat 目錄 訪問 一、Tomcat 服務器文件壓縮成功後,將會出現7個文件夾,Tomcat目錄下的文件結構,如下: Tomcat (1)bin --------------------保存啟動與監控Tom
Tomcat的工程目錄結構及原始部署方法
Tomcat目錄結構 複製到Tomcat的webapps目錄下去執行的web工程,其目錄結構都必須遵守一定的標註。Tomcat的一般目錄結構為: 各目錄下包含的檔案介紹: - test下:WEB-INF資料夾、JSP檔案、HTML檔案以及一些圖片
tomcat目錄結構、web應用的目錄結構及相關應用
tomcat的目錄結構 —–簡單說 /bin:存放啟動和關閉tomcat的指令碼檔案; /conf:存放tomcat的各種配置檔案,比如:server.xml /server/lib:存放tomcat伺服器所需要的各種jar檔案(jar檔案只可被tomc
Tomcat內部結構及請求原理(轉)
周期 成了 authent 代碼 部分 min 它的 war ace Tomcat Tomcat是一個JSP/Servlet容器。其作為Servlet容器,有三種工作模式:獨立的Servlet容器、進程內的Servlet容器和進程外的Servlet容器。 Tomcat的組織
zbb20171108 tomcat目錄結構
apps 刪除 訪問 日誌文件 web-inf trigge win trigger 文件夾 Tomcat8.0的目錄結構:/bin:存放windows或Linux平臺上啟動和關閉Tomcat的腳本文件,startup.bat,shutdown.bat,可以直接開啟關閉to
Tomcat 目錄結構以及基本配置
路勁 運行 system 工作 tom 地址 class文件 我們 webapps 1 Tomcat 目錄層次結構 ① bin:存放啟動和關閉tomcat 的腳本文件② conf: 存放配置文件 server.xml:該文件用於配置和ser
Tomcat的結構及工作原理
Tomcat 工作原理 Tomcat下有一個Server服務器,裏面有多個service服務,每個service服務有兩個核心組件:Connector和Container——工作原理(處理請求的過程) 用戶點擊網頁內容,請求被發送到本機端口8080,被在那裏監聽的Coyote HTTP/1.1 Co
Tomcat目錄結構詳解
不能 虛擬 進制 應用 其他 詳解 其中 use 執行 1.bin: 該目錄下存放的是二進制可執行文件,如果是安裝版,那麽這個目錄下會有兩個exe文件:tomcat6.exe、tomcat6w.exe,前者是在控制臺下啟動Tomcat,後者是彈出UGI窗口啟動Tomc
tomcat整體結構及元件介紹
tomcat核心由聯結器(Connector)元件和容器(Container)元件組成: 1,Connector元件負責在伺服器端處理客戶端連線,包括接收客戶端連線,接收客戶端訊息報文以及訊息報文的解析工作 2,Container元件負責對客戶端請求進行邏輯處理,並把結果返回給客戶端