Tomcat8源碼分析-啓動流程-start方法

上一篇:Tomcat8源碼分析-啓動流程-load方法web

前面講了啓動流程中的Catalina.load,進一步調用絕大部分組建的init操做,主要完成對server.xml解析,並根據解析的結果結合設置的Rule(規則)構造了最初的StandardServer對象,好比Server-Service-Engine層次結構,添加默認的監聽等;還有對Tomcat-user.xml的解析與操做,啓動HTTP/AJP 兩種監聽(此時不可用)。app

時序圖

init操做完成,緊接着就是start了,耐心看看如下時序圖,時間不夠主要看調用的套路,特別是LifecycleBase的start\startInternal\setState\setStateInternal和ContainerBase中的startInternal,還有StandardService/Host/Context 與HostConfig/ContextConfig對象的內容webapp

過程很長,若是時間比較充足建議根據圖示,跟着源碼看。源碼分析

說明

大致流程說明

Server啓動全部的Service,Service啓動惟一的Engine和全部的MapperListener與Connector,Engine啓動全部的Host(一般咱們見到的webapps),Host啓動它全部的Context(這裏面就包含了對context.xml的解析,解析web.xml完成應用的部署)spa

核心點與關鍵類說明

StandardService

 

ContainerBase

 

HostConfig

 

StandardContext

 

ContextConfig

 

Mapper

 

MapperListener啓動

將class目錄、jar、servlet-mapping、welcome list等添加到ContextVersion對象中,後期在接收請求由CoyoteAdapter處理的時候,會根據這裏的結果去匹配惟一的Servlet進行處理,沒有匹配成功就會報錯.net

詳情見:Tomcat8源碼分析-啓動流程-MapperListener啓動server

循環部署應用

這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-循環部署應用(待完成)xml

Servlet封裝與啓動

這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-Servlet封裝與啓動(待完成)對象

Filter封裝與啓動

這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-Filter封裝與啓動(待完成)blog

擴展:Tomcat8源碼分析-context.xml詳解(待完成)

相關文章
相關標籤/搜索