1 Lifecycle接口
Tomcat通过org.apache.catalina.Lifecycle接口统一管理生命周期,所有有生命周期的组件都要实现Lifecycle接口。Lifecycle接口一共做了4件事:
定义了13个String类型常量,用于LifecycleEvent事件的type属性中,作用是区分组件发出的LifecycleEvent事件时的状态(如初始化前、启动前、启动中等)。这种设计方式可以让多种状态都发送同一种类型的事件(LifecycleEvent)然后用其中的一个属性来区分状态而不用定义多种事件。
定义了三个管理监听器的方法addLifecycleListener、findLifecycleListeners和removeLifecycleListener,
分别用来添加、查找和删除LifecycleListener类型的监听器。
定义了4个生命周期的方法:init、start、stop和destroy,用于执行生命周期的各个阶段的操作。
定义了获取当前状态的两个方法getState和getStateName,用来获取当前的状态,getState的返回值LifecycleState是枚举类型,里边列举了生命周期的各个节点,getStateName方法返回String类型的状态的名字,主要用于JMX中。
2 LifecycleBase
Lifecycle的默认实现是org.apache.catalina.util.LifecycleBase,所有实现了生命周期的组件都直接或间接地继承自LifecycleBase,LifecycleBase为Lifecycle里的接口方法提供了默认实现:监听器管理是专门使用了一个LifecycleSupport类来完成的,LifecycleSupport中定义了一个LifecycleListener数组类型的属性来保存所有的监听器,然后并定义了添加、删除、查找和执行监听器的方法;生命周期方法中设置了相应的状态并调用了相应的模板方法,init、start、stop和destroy所对应的模板方法分别是initInternal、startInternal、stopInternal和destroyInternal方法,这四个方法由子类具体实现,所以对于子类来说,执行生命周期处理的方法就是initInternal、startInternal、stopInternal和destroyInternal
相关文章
- ROS命令管理器-命令集目录ROS2说明
- Vue框架:9,Vue3的用法,setup函数,ref和reactive,计算属性和监听属性,生命周期,toRefs,script setup的作用和lang,Vue后台管理模板
- 大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad
- 《C#微信开发系列(2)-自定义菜单管理》
- 项目一众筹网02_2_管理员登录(转发改成重定向到主页面、退出登录(转发和重定向的区别、强制session失效invalidate)、新建jsp模板
- How Tomcat works — 八、tomcat中的session管理
- docker数据管理2
- FedLCM:统一的联邦学习生命周期管理平台
- cocos2d-x内存管理机制-沈大海cocos2d-x教程6
- ip2region 2.11.1 发布 - 开源 IP 数据管理框架和定位库