Tomcat源码之LifeCycle

24 阅读1分钟
*            start()
*  -----------------------------
*  |                           |
*  | init()                    |
* NEW -»-- INITIALIZING        |
* | |           |              |     ------------------«-----------------------
* | |           |auto          |     |                                        |
* | |          |/    start() |/   |/     auto          auto         stop() |
* | |      INITIALIZED --»-- STARTING_PREP --»- STARTING --»- STARTED --»---  |
* | |         |                                                            |  |
* | |destroy()|                                                            |  |
* | --»-----«--    ------------------------«--------------------------------  ^
* |     |          |                                                          |
* |     |         |/          auto                 auto              start() |
* |     |     STOPPING_PREP ----»---- STOPPING ------»----- STOPPED -----»-----
* |    |/                               ^                     |  ^
* |     |               stop()           |                     |  |
* |     |       --------------------------                     |  |
* |     |       |                                              |  |
* |     |       |    destroy()                       destroy() |  |
* |     |    FAILED ----»------ DESTROYING ---«-----------------  |
* |     |                        ^     |                          |
* |     |     destroy()          |     |auto                      |
* |     --------»-----------------    |/                         |
* |                                 DESTROYED                     |
* |                                                               |
* |                            stop()                             |
* ---»------------------------------»------------------------------

tomcat大部分组件都实现了LifeCycle.即组件都具备生命周期。

生命周期包含四个阶段: init初始化 start启动 stop停止 destory销毁

组件可以进行状态转化。 初始化可以转为销毁、启动; 启动可以转为停止; 停止可以转为启动、销毁; 初始化、启动和停止都可以的失败,失败都进入到销毁。