您的位置:首页 > 运维架构 > Tomcat

Tomcat类分析-Lifecycle

2016-03-10 19:43 483 查看
   Lifecycle,即生命周期,是Tomcat中各个组件都需要继承的一部分。

   采用了经典的设计模式-观察者模式。所有继承了他的组件,都被视为被观察的对象,观察者通过addLifecycleListener()加入到观察者队列中,当组件的状态(state)改变,就会触发(fire)观察者队列。

1、Lifecycle接口



  从图中可以清楚的看到接口的设计目的,定义所有状态的值,提供初始化,开始,结束,销毁等方法。

2、LifecycleBase

   该类为实现了Lifecycle的抽象类。

   


     

   对初始化,开始,结束提供了实现方法。

   在方法的开始和结束时,会通过setStateInternal()设置当前组件的状态,状态改变后会通过fireLifecycleEvent通知观察者队列


   在2次状态改变之中,会调用XXXXInternal()方法,每个组件会有该方法的实现。

3、LifecycleSupport

   生命周期的辅助类,主要保存观察者队列,以及对该队列进行操作。

//采用数组的方式保存观察者。
private LifecycleListener listeners[] = new LifecycleListener[0];
//当队列改变时采用该属性当作锁。
private final Object listenersLock = new Object();
public void fireLifecycleEvent(String type, Object data) {
//遍历队列,根据状态(事件类型)触发事件。
LifecycleEvent event = new LifecycleEvent(lifecycle, type, data);
LifecycleListener interested[] = listeners;
for (int i = 0; i < interested.length; i++)
interested[i].lifecycleEvent(event);

}

4、LifecycleMBeanBase

   继承了LifecycleBase,实现了MBeanRegistration。

   看到了MBean,就应该想到该类应该和JMX会有关系。

   


   主要是提供了设置JMX注册所需的基本属性,domain,oname,server以及提供了注册的方法register();

   到这里。Lifecycle内容已经完成。各个组件只需要继承LifecycleMBeanBase就可以完成观察者模式以及JMX注册。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat