tomcat6原始碼大致流程

2021-06-06 19:30:58 字數 1867 閱讀 8432

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 方法...