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











网友评论