title: Tomcat 启动流程
date: 2020/05/12 17:06
Bootstrap#main() 方法是启动的入口
Bootstrap 类主要负责根据不同的命令来调用 Catalina 类的不同方法
tag1
tag1.1 initClassLoaders()
tag2 setAwait()
tag3 load()
通过反射调用了 Catalina 类的 load 方法
注意:Server 组件还有 6 个生命周期监听器,虽然我不知道是干啥的
tag3.1 engine.init()
tag3.2 pipline.init()
什么也没干
tag3.3 connector.init()
tag4 start()
通过反射调用了 Catalina 类的 start 方法
tag4.1 Engine#start()
tag4.1.1 Host#start()
HostConfig 的在下面,建议先看下
tag4.1.2 Pipline#start()
就是简单的循环启动,也没做啥
tag4.1.3 threadStart
tag4.2 mapperListener.start()
这个时候整个 Tomcat 的容器已经全部创建完成并进行了启动。
构建 Mapper 的代码太复杂,我们就不看了,看下 MappingListener 实现的监听器做了什么。
tag4.3 connector.start()
HostConfig
我们直接看部署文件夹的
Host#addChildren
Context#start()
就是这个事件触发了 ContextConfig 调用了 Wrapper#start()。
加载 Servlet 那段代码我们下节讲请求流程的时候再讲