1. bootstrap:start()------
初始化:設定catalinahome,catalinabase, 初始化classloader(commonloader,sharedloader,catalinaloader).
通過反射catalina.class 呼叫其方法setparentclassloader。
2 ---------->catalina.class start()--------
load():初始化dirs,naming,digester,initstreams,
3 ----->standardservice.start()--------
init() :container,register with the server ,initialize our defined connectors(initializa adapter,)------
4 ----->connector: start()------
initialize our defined connectors(initializa adapter,)
registercomponent--protocolhandler----
// initializa adapter
adapter = new coyoteadapter(this);
protocolhandler.setadapter(adapter);
adapter通過protocolhandler(http11protocol)傳給http11processor,
http11processor解析,create request和response,通過adapter傳送給container
7 ----->jioendpoint jioendpoint.start(); jioendpoint啟動server socket,listern 8080埠,處理http請求
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去處理)
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
tomcat6 原始碼分析(1)
相關基礎概念 容器 在tomcat中的容器有 engine host context等容器,主要用於服務的封裝和組織。聯結器 在tomcat中的聯結器其實就是乙個多執行緒的serversocket的accept的過程,把獲取的socket分配給連線處理器處理。內部過濾器 tomcat內部的請求過濾器...
tomcat6原始碼分析一(核心模組分析)
tomcat總體架構 tomcat核心模組分析 tomcat是目前非常流行的web容器,tomcat總體架構見下圖。圖1 tomcat總體架構圖 connector好比酒店前台接待人員,container好比乙個酒店房間 床鋪等硬體設施,乙個酒店可以有多類不同職能的接待人員。比如 有的專職為vip客...
Tomcat原始碼解析(6)
用來記錄訊息的元件。在catalina中,日誌記錄器需要與某個servlet容器相關聯。在org.apache.catalina.logger包下,tomcat提供幾種不同型別的日誌記錄器。與上一節的程式相比,只是 context和bootstrap類有變化。logger介面 提供了一些log 方法...