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 {
@Override
protected void initInternal() throws LifecycleException {
// TODO Auto-generated method stub
}
@Override
protected void startInternal() throws LifecycleException {
this.setState(LifecycleState.STARTING);
}
@Override
protected void stopInternal() throws LifecycleException {
// TODO Auto-generated method stub
}
@Override
protected 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 {
@Override
public 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();
}
}