Tomcat类分析-Lifecycle

   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注册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值