Tomcat生命周期管理

一、生命周期统一接口Lifecycle:

  在自定义Mini-Tomcat之动态资源访问实现中已分析tomcat的两个功能,通过server.xml配置可以进行设置。下面看看Tomcat的实际的server.xml配置:

          

  从配置结构看,Tomcat内部架构中各个核心组件是包含于被包含的关系,往下层层包含。其以容器的方式来组织整个系统架构,类似数据结构中的树——父节点没有其他节点,其他节点有且仅有一个父节点,每个父节点有零个或多个子节点。如下图:

          

  鉴于此架构,可以通过父容器启动其子容器,这样只要启动根容器就可以把其他所有容器都启动,达到统一启动、停止、关闭的效果。调试代码发现解析server.xml后进行各组件初始化的过程中始终调用LifecycleBase中的init方法,通过UML图分析结构如下:

          

  所以可知Tomcat架构设计了一个用Lifecycle管理启动、停止、关闭所有组件的统一接口。LifeCycle定义如下:

          

二、生命周期状态转化

  查看顶层接口Lifecycle相关信息,其定义了实现了其接口组件的生命周期中的所有状态。具体状态转换如下图:

          

  图中状态转化的触发点清晰标注,有auto,有通过方法触发。这些状态的定义在枚举LifecycleState中:

          

三、生命周期事件监控

  在Lifecycle的UML图中有一个Listener的接口,简化该UML中类并添加一个Event类,如下:

          

  可以参考Spring常用配置之Application Event(事件)中关于监听器实现,Tomcat实现逻辑类似。

 

posted on 2024-04-25 15:37  池塘里洗澡的鸭子  阅读(9)  评论(0编辑  收藏  举报