Tomcat中的各容器组件都会涉及创建、销毁等,因此设计了⽣命周期接⼝Lifecycle进⾏统⼀规范,各容器组件实现该接⼝。
Lifecycle⽣命周期接⼝主要⽅法示意

Lifecycle⽣命周期接⼝继承体系示意

核⼼流程源码剖析
源码追踪部分我们关注两个流程:Tomcat启动流程和Tomcat请求处理流程
一. Tomcat启动流程
(一)追踪过程
1. 入口


2. 追踪方式
tomcat的启动分两个步骤,首先是逐级初始化,然后是逐级start。
(1) 逐级初始化
先找到Bootstrap类的main方法入口,找到bootstrap.init();这里主要是对catalina类进行实例化


然后在main方法中找到 daemon.load(args),这里daemon就是Bootstrap的实例化对象

然后在Bootstrap类的load方法中,通过反射执行catalina的load方法

在catalina的load方法内,再创建并执行Server的init方法,以此逐级创建并执行各组件的init方法
(2) 逐级start
首先先找到Bootstrap类的main方法入口,然后在main方法中找到 daemon.start(),这里daemon就是Bootstrap的实例化对象.

然后在daemon.start()方法里再执行catalina类的start方法,以此类推。

(二)启动流程图示

二. Tomcat请求处理流程
(一)请求处理流程分析

(二) 请求处理流程示意图

(三) 追踪过程(按顺序看截图)

























(三) 调用栈顺序

(四) Mapper组件体系结构
本文详细剖析了Tomcat的启动流程,从Bootstrap的main方法入口开始,逐级进行初始化和start操作,涉及Catalina、Server等组件的生命周期管理。此外,还探讨了Tomcat的请求处理流程,包括请求的分析、调用栈顺序以及Mapper组件的体系结构。

被折叠的 条评论
为什么被折叠?



