Tomcat类分析-Lifecycle
2016-03-10 19:43
483 查看
Lifecycle,即生命周期,是Tomcat中各个组件都需要继承的一部分。
采用了经典的设计模式-观察者模式。所有继承了他的组件,都被视为被观察的对象,观察者通过addLifecycleListener()加入到观察者队列中,当组件的状态(state)改变,就会触发(fire)观察者队列。
1、Lifecycle接口
从图中可以清楚的看到接口的设计目的,定义所有状态的值,提供初始化,开始,结束,销毁等方法。
2、LifecycleBase
该类为实现了Lifecycle的抽象类。
对初始化,开始,结束提供了实现方法。
在方法的开始和结束时,会通过setStateInternal()设置当前组件的状态,状态改变后会通过fireLifecycleEvent通知观察者队列
。
在2次状态改变之中,会调用XXXXInternal()方法,每个组件会有该方法的实现。
3、LifecycleSupport
生命周期的辅助类,主要保存观察者队列,以及对该队列进行操作。
4、LifecycleMBeanBase
继承了LifecycleBase,实现了MBeanRegistration。
看到了MBean,就应该想到该类应该和JMX会有关系。
主要是提供了设置JMX注册所需的基本属性,domain,oname,server以及提供了注册的方法register();
到这里。Lifecycle内容已经完成。各个组件只需要继承LifecycleMBeanBase就可以完成观察者模式以及JMX注册。
采用了经典的设计模式-观察者模式。所有继承了他的组件,都被视为被观察的对象,观察者通过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注册。
相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- Linux部署Tomcat服务器
- jenkins------结合maven将svn项目自动部署到tomcat下
- 如何搞定tomcat这只喵~
- tomcat在opensuse下开机自启失败的原因分析及解决方法
- jsp项目中更改tomcat的默认index.jsp访问路径的方法
- Tomcat 多端口 多应用
- tomcat 5.0 + apache 2.0 完全安装步骤详解
- Tomcat安全设置 win2003 下tomcat权限限制
- Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
- Tomcat服务器 安全设置第1/3页
- tomcat 6.0.20在一个机器上安装多个服务的方法
- Tomcat 5.5 数据库连接池配置
- Tomcat内存溢出分析及解决方法
- apache tomcat 一个网站多域名的实现方法
- Tomcat无法加载css和js等静态资源文件的解决思路