Tomcat主流程的启动

1.Bootstrap启动

    Tomcat的入口,调用main()方法去启动整个tomcat的服务

main():新建Bootstrap,并执行init方法初始化;然后处理main方法传入的命令,如果args参数为空,默认执行start。

init():初始化ClassLoader,并用ClassLoader创建了Catalina实例。

start():处理调用三个方法:setAwait(true),load(args)和start().

2.Catalina的启动过程

Catalina的启动主要是调用setAwait,load和start方法来完成的。

setAwait():用于设置Server启动完成后是否进入等待状态的标志,如果是TRUE的话,则进入,否则不进入

Load():用于加载配置文件,创建并初始化Server,根据conf/server.xml创建了Server对象,并赋值给server属性(解析开元项目Digester完成的)

start():用于启动服务器,并根据await属性判断是否让程序进入了等待状态

3.Server启动过程

addService(Service service)、removeService(Service service)来添加和删除Service,Server 的init方法和start方法分别循环调用每个Service的init方法和start方法来启动所有的Service。

Server的默认实现了org.apache.catalina.core.StandardServer.StandardServer继承自LifecycleMBeanBase,LifecycleMBeanBase继承自LifecycleBase,init和start定义在Lifecyclebase中,LifeCycleBase又实现了initInternal方法和StartInternal方法,这个俩个方法都是模板方法,由具体的子类去实现。因此调用StandardServer的init和start方法时会去执行StandardServer中的initInternal和startIntegernal方法。

4.Service启动

Service的默认实现是org.apache.catalina.core.StandardService.

在Stan大人Service中的initInternal和startInternal方法调用Container,executors,mapperListener,connector的init和start方法。

MapperListener是Map普洱的监听器,可以监听Container容器的变化,executors是用在connectors中管理线程的线程池。

Tomcat整体启动流程图:

Tomcat主流程的启动_第1张图片

你可能感兴趣的:(Tomcat主流程的启动)