Lifecycle(生命周期)

来源:互联网 发布:绝地网络延迟检测 编辑:程序博客网 时间:2024/05/18 12:28

tomcat生命周期组件类图

类图解读

tomcat是基于组件化的管理,每个组件都有自己的生命周期,例如:启动、停止和销毁等。

tomcat的Lifecycle的代码实现有两大部分组成:

1.核心接口部分:

org.apache.catalina.LifecycleEvent  // 生命周期事件类

org.apache.catalina.LifecycleListener // 生命周期监听器

org.apache.catalina.LifecycleException // 异常类

org.apache.catalina.Lifecycle // 生命周期核心接口

2.基本抽象实现部分:

org.apache.catalina.LifecycleState // 生命周期状态

org.apache.catalina.util.LifecycleBase // 生命周期基类

org.apache.catalina.util.LifecycleSupport // 生命周期管理支撑类


举例实现生命周期管理

一般我们实现一个需要生命周期管理的组件,需要两个步骤:
1.继承LifecycleBase,并实现对应的抽象方法。
2.创建一个LifecycleListener类,并添加的上面的生命周期管理对象中。

演示代码如下:
package sample.lifecycle;import org.apache.catalina.LifecycleException;import org.apache.catalina.LifecycleState;import org.apache.catalina.util.LifecycleBase;public class LifecycleSample1 extends LifecycleBase {@Overrideprotected void initInternal() throws LifecycleException {// TODO Auto-generated method stub}@Overrideprotected void startInternal() throws LifecycleException {this.setState(LifecycleState.STARTING);}@Overrideprotected void stopInternal() throws LifecycleException {// TODO Auto-generated method stub}@Overrideprotected void destroyInternal() throws LifecycleException {// TODO Auto-generated method stub}}



package sample.lifecycle;import org.apache.catalina.Lifecycle;import org.apache.catalina.LifecycleEvent;import org.apache.catalina.LifecycleListener;public class LifecycleSample1Listener implements LifecycleListener {@Overridepublic void lifecycleEvent(LifecycleEvent event) {if(Lifecycle.START_EVENT.equals(event.getType())){System.out.println("starting...");}}}


package sample.lifecycle;import org.apache.catalina.LifecycleException;public class LifecycleSample1Test {public static void main(String[] args) throws LifecycleException {LifecycleSample1 sample1 = new LifecycleSample1();sample1.addLifecycleListener(new LifecycleSample1Listener());sample1.start();}}



0 0