上一篇讲完了容器的初始化,下面会讲容器的启动
Tomcat 启动分析-容器启动

 

1、入口依然是Catalina的start方法中,会调用StandardServer的start方法

Tomcat 启动分析-容器启动

2、StandardServer调用StandardService的start方法

Tomcat 启动分析-容器启动

3、StandardService的start方法主要是调用Engie和Connetor的start方法

Tomcat 启动分析-容器启动

其中Connector会调用Protocal的start方法,Protocal会调用endpoint的start方法,endpoint会启动一个线程池,用来处理请求;
4、而engine的start方法会调用父类ContainerBase的start方法, ContainerBase会启动子容器StandardHost,和启动pipeline

Tomcat 启动分析-容器启动

Tomcat 启动分析-容器启动

5、host和engine都是继承了ContainerBase,启动的调用方式类似
Tomcat 启动分析-容器启动

host 如何去启动context的呢

首先host会调用HostConfg去解析所有的context,那么先来看看HostConfig 如何注入到host中的

在初始化Host的时候会注入HostConfig
Tomcat 启动分析-容器启动

HostConfig作为一个监听器注入到host中后,会在host启动的时候触发start事件

Tomcat 启动分析-容器启动

Tomcat 启动分析-容器启动

这会触发HostConfig的start方法

 Tomcat 启动分析-容器启动

HostConfig会部署各个应用
Tomcat 启动分析-容器启动

 我们就使用deployWARS来看看是如何启动context的

Tomcat 启动分析-容器启动

最终都会创建一个context

6、StandardContext的start方法会启动很多线程,最主要的它会调用我们的application的listener

首先我们看一下StandardContext是如何初始化的,

a、

Tomcat 启动分析-容器启动

 

 下面就是调用各个应用的监听器

Tomcat 启动分析-容器启动

 tomcat大致启动就完毕了

 

相关文章:

  • 2022-12-23
  • 2021-07-24
  • 2021-07-18
  • 2021-12-15
  • 2021-11-29
  • 2021-12-08
  • 2021-12-11
  • 2022-02-19
猜你喜欢
  • 2022-12-23
  • 2021-11-30
  • 2021-12-10
  • 2021-05-27
  • 2021-09-03
  • 2021-04-29
相关资源
相似解决方案