Tomcat学习积累笔记—Tomcat源码查看
1.启动流程时序图解读
tomcat启动脚本,先执行startup.sh
,之后指向catalina.sh
,之后catalina.sh
指向了Tomcat中的Bootstrap
启动类,通过这样启动的java应用
startup.sh/startuo.bat
先调用Bootstrap的main函数
,先进入Bootstrap中
Bootstrap
先进行init初始化
,就是先调用自己的init方法
,这个方法在初始化一些类加载器
Bootstrap
再调用自己的load方法
,这个load方法
调用了Catalina的构造方法
Catalina
是一个全局的Servlet容器
的一个实例,就是一个Servlet容器
Catalina
先创建一个ServerCatalina
初始化,调用了Server的init方法- Server初始化调用了Service的init方法
- Service的初始化调用了Engine的init方法
- Engine初始化调用了host的init方法
- host的初始化调用了Context的init方法
- Service初始化同时也调用了Executor的init方法
- Service初始化同时也调用了Connector的init方法
- Connector的初始化也调用了ProtocolHandler的init方法,而且ProtocolHandler是一个组合的组件,这里面有一个EndPoint的组件
(进行socket处理的)
,就是初始化这个组件的(完成通信端点的)
,完成接口的绑定 - 当BootStrap中的load方法执行完毕后,BootStrap还会调用start方法
- BootStrap还会调用
Catalina
的start方法,把容器启动 Catalina
调用Server的start方法- Server调用Service的start方法
- … …一直到23都是逐层调用
2.容器生命周期管理机制
Tomcat中的各容器组件都会涉及创建、销毁等,因此设计了⽣命周期接⼝Lifecycle
进⾏统⼀规范,各容器组件实现该接⼝。
1. Lifecycle⽣命周期接⼝主要⽅法示意
2. Lifecycle⽣命周期接⼝继承体系示意
3.接口ProtocolHandler查看
1. ProtocolHandler是个组合组件,在这里面定义了TCP/IP
以及Http
协议的
2. ProtocolHandler接口的实现类
4. Mapper组件机制及请求处理机制
- 请求处理流程分析
- Mapper组件体系结构
- MapElement:是一个基类,里面的属性只有
name
,object
- MapElement:是一个基类,里面的属性只有
- 请求处理流程示意图