Bootstrap

运行Tomcat启动类BootStrap

启动类主要作用,通过反射实例化org.apache.catalina.startup.Catalina对象

通过反射执行Catalina.load和start方法,如下图

Catalina

load

load方法,主要创建Digester用来解析server.xml文件,并初始化server对象,执行server的init方法



继续跟踪server.init方法发现,会按照StandardServer -> StandardService -> StandardExcutor-> Engine -> Host -> Context -> Connector 顺序,分别执行对应的init方法

每个容器都在初始化自身相关设置的同时,将子容器初始化。


StandardServer是如何初始化StandardService?

1.创建Digester的时候会通过addService配置Service,最终填充StandardServer里的services[]数组里

2.StandardServer.initInternal方法里,最后调用 services[i].init()初始化StandardService

start

start方法,主要调用getServer().start(),由load流程可知,此start方法,调用的为LifecycleBase

的start方法,最终调用的抽象方法startInternal,此方法同抽象方法initInternal相同,都是由各个插

件自己实现的,按照tandardServer -> StandardService -> StandardExcutor-> Engine -> Host -> Context -> Connector 顺序执行startf方法


LifecycleBase

初始化、start、销毁等动作,都是定义在LifecycleBase中,然后由各个组件自己去实现

总结