7.1 Tomcat的顶层结构及启动过程

2017-04-18  本文已影响0人  AssassinFGO

系列文章为阅读《看透spring mvc源代码分析与实践》的笔记

7.1.1 Tomcat的顶层结构


Tomcat的 Server 由 org.apache.statup.Catalina 来管理,Catalina是Tomcat的管理类。Server的init、start和stop方法会按容器的结构逐层调用相应的方法。

7.1.2 Bootstrap 的启动过程

Tomcat的入口main方法在Bootstrap中。Bootstrap的设计使用了适配器模式,把启动的入口类具体的管理类进行分离
Bootstrap 的 main 方法:

Bootstrap main方法

7.1.3 Catalina 的启动过程

Catalina 的启动主要是通过调用上面提到的三个方法完成的。

setAwait方法:设置等待标志

setAwait用于设置Server启动后是否进入等待状态的标志。

setAwait 方法

load方法:创建Server并初始化

load方法根据conf/server.xml创建了 Server 对象,并赋值操作给 server 属性,然后调用了Server的init方法。


load 方法

start方法:调用Server的start启动服务器

Catalina 的 start 方法主要调用了Server的start方法启动服务器,并根据await属性判断是否让程序进入等待状态。

7.1.4 Server的启动过程

Server 的默认实现是 org.apache.catalina.core.StandardServer,StandardServer 继承自 LifecycleMBeanBase,LifecycleMBeanBase又继承自 LifecycleBase。 init 和 start 方法就定义在 LifecycleBase 中,LifecycleBase 里的init和start方法又调用initInternal和startInternal方法,这两个方法都是模板方法有子类实现。所以 StandardServer 执行 init 和 start 方法会调用自己的 initInternal 和 startInternal 方法。
同时 init 和 start 方法分别循环调用了每个Service的 init 和 start 方法。

7.1.5 Service 的启动过程

Service 的默认实现是org.apache.catalina.core.StandarService,StandarService 也继承自 LifecycleMBeanBase 类,所以 init 和 start 方法最终也会调用自己的 initInternal 和 startInternal 方法。initInternal 和 startInternal 主要调用下面的 init 和 start方法:

Tomcat 顶层组件启动时序图
上一篇 下一篇

猜你喜欢

热点阅读