程序员社区

Tomcat 启动流程


title: Tomcat 启动流程
date: 2020/05/12 17:06


Bootstrap#main() 方法是启动的入口

Bootstrap 类主要负责根据不同的命令来调用 Catalina 类的不同方法

Tomcat 启动流程插图

tag1

Tomcat 启动流程插图1

tag1.1 initClassLoaders()

Tomcat 启动流程插图2

tag2 setAwait()

Tomcat 启动流程插图3

tag3 load()

通过反射调用了 Catalina 类的 load 方法

Tomcat 启动流程插图4
Tomcat 启动流程插图5

注意:Server 组件还有 6 个生命周期监听器,虽然我不知道是干啥的

Tomcat 启动流程插图6
Tomcat 启动流程插图7
Tomcat 启动流程插图8

tag3.1 engine.init()

Tomcat 启动流程插图9
Tomcat 启动流程插图10

tag3.2 pipline.init()

什么也没干

tag3.3 connector.init()

Tomcat 启动流程插图11

tag4 start()

通过反射调用了 Catalina 类的 start 方法

Tomcat 启动流程插图12
Tomcat 启动流程插图13
Tomcat 启动流程插图14
Tomcat 启动流程插图15

tag4.1 Engine#start()

Tomcat 启动流程插图16

tag4.1.1 Host#start()

Tomcat 启动流程插图17
Tomcat 启动流程插图18
Tomcat 启动流程插图19
Tomcat 启动流程插图20

HostConfig 的在下面,建议先看下

tag4.1.2 Pipline#start()

Tomcat 启动流程插图21

就是简单的循环启动,也没做啥

tag4.1.3 threadStart

Tomcat 启动流程插图22
Tomcat 启动流程插图23
Tomcat 启动流程插图24
Tomcat 启动流程插图25

tag4.2 mapperListener.start()

这个时候整个 Tomcat 的容器已经全部创建完成并进行了启动。

Tomcat 启动流程插图26

构建 Mapper 的代码太复杂,我们就不看了,看下 MappingListener 实现的监听器做了什么。

Tomcat 启动流程插图27
LifecycleListener
Tomcat 启动流程插图28
ContainerListener

tag4.3 connector.start()

Tomcat 启动流程插图29

HostConfig

Tomcat 启动流程插图30
Tomcat 启动流程插图31
Tomcat 启动流程插图32

我们直接看部署文件夹的

Tomcat 启动流程插图33
Tomcat 启动流程插图34
Tomcat 启动流程插图35

Host#addChildren

Tomcat 启动流程插图36
Tomcat 启动流程插图37

Context#start()

Tomcat 启动流程插图38
Tomcat 启动流程插图39

就是这个事件触发了 ContextConfig 调用了 Wrapper#start()。

Tomcat 启动流程插图40

加载 Servlet 那段代码我们下节讲请求流程的时候再讲

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Tomcat 启动流程

一个分享Java & Python知识的社区