Tomcat 原始碼分析

2021-09-02 03:37:49 字數 2630 閱讀 8281

tomcat 原始碼分析

------------------

bootstrap

引導過程:

1 初始化自定義的類載入器:

common

shared

catalina

2 建立並例項化第乙個元件類 catalina

tomcat 元件體系:

server

service

connector

engine

host

context

實現lifecycle生命週期介面: 表示支援生命週期管理.

start

stop

實現mbeanregistration介面: 表示這是乙個mbean.

實現service介面,表示這是乙個服務元件.

3. 建立server, service, connector, executor, lifecyclelistener, globalnamingresource 等元件

讀取配置檔案 conf/server.xml 並通過反射呼叫:

setserver(catalina)

setglobalnamingresources

addlifecyclelistener

addservice

addexecutor

addconnector

4. 初始化 server

standardserver

4.1 jmx 註冊 standardserver mbean 到 jmbean server,名稱:catalina:type=server

4.2 註冊 stringcache mbean, 名稱: catalina:type=stringcache

5. 初始化 service, executor, connector

standardservice

5.1 註冊 standardservice mbean, 名稱: catalina:type=service,servicename=catalina

5.2 註冊 standardthreadexecutor mbean,名稱: catalina:type=executor,name=org.apache.catalina.core.standardthreadexecutor

5.3 註冊 connector mbean, 名稱: catalina:type=connector,port=8080,address=127.0.0.1

catalina:type=connector,port=8009,address=127.0.0.1

5.4 建立介面卡coyoteadapter

5.5 初始化protocolhandler, 我們這裡只看http11protocol

6 jioendpoint

處理tcp連線,預設乙個連線分配給乙個執行緒,支援佇列.

6.1 建立 defaultserversocketfactory

6.2 建立 serversocket

---------------- 引導初始化 ---------------

7 啟動server

7.1 啟動service

7.2 啟動 servlet engine

註冊 standardengine, 名稱: catalina:type=engine

讀取並註冊 conf/tomcat5-mbeans.xml, 呼叫 mbean.init

7.3 啟動 executor

建立 taskqueue, taskthreadfactory

建立 執行緒池 threadpoolexecutor

7.4 啟動 connector

註冊jioendpoint, 名稱: catalina:type=threadpool,name=http11protocol

註冊globalrequestprocessor, 名稱: catalina:type=globalrequestprocessor,name=http11protocol

7.5 啟動 jioendpoint

建立 workerstack 工人執行緒集合

啟動tcp接收執行緒

8 啟動tcp處理執行緒

當有連線建立時,會獲取乙個socket物件.

乙個serversocket可以服務多個socket. 併發時會有多個serversocket.

過程如下:

併發情況下, socket處理會加入佇列, 佇列滿時,會丟擲拒絕連線異常.

然後獲取socket stream,儲存到inputbuffer/outputbuffer

解析請求頭

然後呼叫 adapter.service(request, response) 轉交請求資料給adapter.

...關閉socket

重複上面過程

Tomcat原始碼分析

本文將會介紹tomcat的原始碼,並給出一些分析。org.apache.catalina.startup.bootstrap 該類是tomcat啟動的入口類,包含有main方法。它的主要工作包括 引數解析 環境變數讀取 設定 類載入器初始化 通過反射的方式來呼叫catalina。org.apache...

tomcat原始碼分析

1 執行環境 tomcat 版本 8.0.x 編譯工具 ant 執行ide idea13.1 2 tomcat架構組成 如下圖所示 server 其實就是background程式,在tomcat裡面的server的用處是啟動和監聽服務端事件 諸如重啟 關閉等命令。service 在tomcat裡面,...

Tomcat 原始碼分析

server 伺服器的意思,代表整個 tomcat 伺服器,乙個 tomcat 只有乙個 server server 中包含至少乙個 service 元件,用於提供具體服務。這個在配置檔案中也得到很好的體現 port 8005 shutdown shutdown 是在 8005 埠監聽到 shutd...