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