Tomcat 启动分析-容器启动
上一篇讲完了容器的初始化,下面会讲容器的启动
1、入口依然是Catalina的start方法中,会调用StandardServer的start方法
2、StandardServer调用StandardService的start方法
3、StandardService的start方法主要是调用Engie和Connetor的start方法
其中Connector会调用Protocal的start方法,Protocal会调用endpoint的start方法,endpoint会启动一个线程池,用来处理请求;
4、而engine的start方法会调用父类ContainerBase的start方法, ContainerBase会启动子容器StandardHost,和启动pipeline
5、host和engine都是继承了ContainerBase,启动的调用方式类似
host 如何去启动context的呢
首先host会调用HostConfg去解析所有的context,那么先来看看HostConfig 如何注入到host中的
在初始化Host的时候会注入HostConfig
HostConfig作为一个监听器注入到host中后,会在host启动的时候触发start事件
这会触发HostConfig的start方法
HostConfig会部署各个应用
我们就使用deployWARS来看看是如何启动context的
最终都会创建一个context
6、StandardContext的start方法会启动很多线程,最主要的它会调用我们的application的listener
首先我们看一下StandardContext是如何初始化的,
a、
下面就是调用各个应用的监听器
tomcat大致启动就完毕了