Tc Config
Tomcat 啟動(dòng)過程分析:
?IE 地址欄中敲 :
http://localhost:8080/wsota/ wsota_index.jsp
1 請(qǐng)求被發(fā)送到本機(jī)端口8080 ,被在哪里監(jiān)聽的 Coyote HTTP/1.1 Connector 獲得
2 Connector 把該請(qǐng)求交給 它所在的Service 中的 Engine 引擎去處理
3 Engine獲得請(qǐng)求 localhost/wstoa/wstoa_index.jsp 匹配它所擁有的所有虛擬主機(jī)Host
4 Engine 匹配到名字為localhost 的Host (即使匹配不到也把請(qǐng)求交給該Host處理,因?yàn)樵揌ost被定義為 該Engine的默認(rèn)主機(jī))
5 localhost Host 獲得請(qǐng)求 /wstoa/wstoa_index.jsp 匹配它所擁有的所有Context
6 Host匹配到路徑為/wsota的Context(如果匹配不到就把該請(qǐng)求交給路徑名為""的Context去處理)
7 path="/wsota"的Context獲得請(qǐng)求/wsota_index.jsp,在它的mapping table中尋找對(duì)應(yīng)的servlet
8 Context 匹配到URl pattern 為 *.jsp 的 Servlet 對(duì)應(yīng)于 JspServlet類
9 構(gòu)造 HttpServletRequest 對(duì)象和 HttpServletRespose 對(duì)象 作為參數(shù)調(diào)用 JspServlet的 doGet或doPost方法。
10Context 把執(zhí)行完了之后的 HttpServletRespose對(duì)象返回給HOST
11 Host 把HttpServletRespose 對(duì)象返回給 Engine
12 Engine把 HttpServletRespose對(duì)象返回給 Connector
13 Connector把 HttpServletRespose 對(duì)象 返回給 Browser
?
Tomcat Server的組成部分
1.1 - Server
A Server element represents the entire Catalina servlet container. (Singleton)
1.2 - Service
A Service element represents the combination of one or more Connector components that share a single Engine
Service是這樣一個(gè)集合:它由一個(gè)或者多個(gè)Connector組成,以及一個(gè)Engine,負(fù)責(zé)處理所有Connector所獲得的客戶請(qǐng)求
1.3 - Connector
一個(gè)Connector將在某個(gè)指定端口上偵聽客戶請(qǐng)求,并將獲得的請(qǐng)求交給Engine來處理,從Engine處獲得回應(yīng)并返回客戶
TOMCAT有兩個(gè)典型的Connector,一個(gè)直接偵聽來自browser的http請(qǐng)求,一個(gè)偵聽來自其它WebServer的請(qǐng)求
Coyote Http/1.1 Connector 在端口8080處偵聽來自客戶browser的http請(qǐng)求
Coyote JK2 Connector 在端口8009處偵聽來自其它WebServer(Apache)的servlet/jsp代理請(qǐng)求
1.4 - Engine
The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine下可以配置多個(gè)虛擬主機(jī)Virtual Host,每個(gè)虛擬主機(jī)都有一個(gè)域名
當(dāng)Engine獲得一個(gè)請(qǐng)求時(shí),它把該請(qǐng)求匹配到某個(gè)Host上,然后把該請(qǐng)求交給該Host來處理
Engine有一個(gè)默認(rèn)虛擬主機(jī),當(dāng)請(qǐng)求無法匹配到任何一個(gè)Host上的時(shí)候,將交給該默認(rèn)Host來處理
1.5 - Host
代表一個(gè)Virtual Host,虛擬主機(jī),每個(gè)虛擬主機(jī)和某個(gè)網(wǎng)絡(luò)域名Domain Name相匹配
每個(gè)虛擬主機(jī)下都可以部署(deploy)一個(gè)或者多個(gè)Web App,每個(gè)Web App對(duì)應(yīng)于一個(gè)Context,有一個(gè)Context path
當(dāng)Host獲得一個(gè)請(qǐng)求時(shí),將把該請(qǐng)求匹配到某個(gè)Context上,然后把該請(qǐng)求交給該Context來處理
匹配的方法是“最長(zhǎng)匹配”,所以一個(gè)path==""的Context將成為該Host的默認(rèn)Context
所有無法和其它Context的路徑名匹配的請(qǐng)求都將最終和該默認(rèn)Context匹配
1.6 - Context
一個(gè)Context對(duì)應(yīng)于一個(gè)Web Application,一個(gè)Web Application由一個(gè)或者多個(gè)Servlet組成
Context在創(chuàng)建的時(shí)候?qū)⒏鶕?jù)配置文件$CATALINA_HOME/conf/web.xml和$WEBAPP_HOME/WEB-INF/web.xml載入Servlet類
當(dāng)Context獲得請(qǐng)求時(shí),將在自己的映射表(mapping table)中尋找相匹配的Servlet類
如果找到,則執(zhí)行該類,獲得請(qǐng)求的回應(yīng),并返回
Tomcat start console
2008-7-10 10:38:49 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2008-7-10 10:38:49 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 390 ms
2008-7-10 10:38:49 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2008-7-10 10:38:49 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.17
2008-7-10 10:38:49 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2008-7-10 10:38:50 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2008-7-10 10:38:50 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2008-7-10 10:38:50 org.apache.catalina.startup.Catalina start
信息: Server startup in 750 ms
Note:?
?在配置context.xml
?D:\Dev_tools\apache-tomcat-5.5.17\conf\Catalina\localhost
?example:
?<Context docBase="D:\Projects\zzesweb\web" path="/zzesweb"
???????? reloadable="true" antiResourceLocking="false" antiJARLocking="false">
???? <Resource
????? auth="Container"
????? name="jdbc/zzesweb"???
// <c:set var="dataSource" value="jdbc/zzesweb" scope="page"/>??
// <sql:query dataSource="${dataSource}" var ="rs"? scope="page../">
// sql
// </sql:query>
????? type="javax.sql.DataSource"
????? password="*"
????? driverClassName="com.mysql.jdbc.Driver"
????? maxIdle="30"
????? maxWait="5000"
????? username="root"
????? url="jdbc:mysql://localhost:13306/zzesweb?autoReconnect=true"
????? maxActive="100"/>
</Context>
posted on 2008-08-01 09:46 Anderson 閱讀(201) 評(píng)論(0) 編輯 收藏 所屬分類: java