上一篇: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
將class目錄、jar、servlet-mapping、welcome list等添加到ContextVersion對象中,後期在接收請求由CoyoteAdapter處理的時候,會根據這裏的結果去匹配惟一的Servlet進行處理,沒有匹配成功就會報錯.net
詳情見:Tomcat8源碼分析-啓動流程-MapperListener啓動server
這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-循環部署應用(待完成)xml
這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-Servlet封裝與啓動(待完成)對象
這裏只描述概要,詳情見:Tomcat8源碼分析-啓動流程-Filter封裝與啓動(待完成)blog
擴展:Tomcat8源碼分析-context.xml詳解(待完成)