[笔记]深入剖析Tomcat-生命周期,日志记录器
2013-01-01 11:27
609 查看
lifecycle接口
实现lifecycle接口的组件启动或关闭时可以触发before_start_event, start_event...stop_event...事件,管理生命周期
LifecycleEvent
LifecycleListener
LifecycleSupport,实现了Lifecycle接口,将所有注册的事件监听器存储到一个数组中,帮助组件管理监听器,并触发相应的生命周期
实现lifecycle接口的组件启动或关闭时可以触发before_start_event, start_event...stop_event...事件,管理生命周期
public interface Lifecycle{ public void addLifecycleListener(LifecycleListener listener); public LifecycleListener[] findLifecycleListener(); public void removeLifecycleListener(LifecycleListener listener); public void start(); public void stop(); }
LifecycleEvent
public final class LifecycleEvent extends EventObject{ private Object data= null; private Lifecycle lifecycle = null; private String type = null; //... public LifecycleEvent(Lifecycle lifecycle, String type, Object data){ ... } }
LifecycleListener
public interface LifecycleListener{ public ovid lifecycleEvent(LifecycleEvent event);//触发event事件 }
LifecycleSupport,实现了Lifecycle接口,将所有注册的事件监听器存储到一个数组中,帮助组件管理监听器,并触发相应的生命周期
public final class LifecycleSupport{ private Lifecycle lifecycle = null; private LifecycleListener[] listeners = new LifecycleListener[0]; public LifecycleSupport(Lifecycle lifecycle){ //... } public void addLifecycleListener(LifecycleListener listener){ //add listener to listeners } //findLifecycleListenres() //removeLifecycleListener public void fireLifecycleEvent(String type, Object data){ LifecycleEvent event = new LifecycleEvent(lifecycle, type, data); //trigger listeners lifecycleEvent method } }
public class SimpleContext implements Context, Container, Lifecycle{ //... protected LifecycleSupport = new LifecycleSupport(this); public synchronized void start{ if (started){ started = true; lifecycle.fireLifycycleEvent(BEFORE_START_EVENT, null); if(loader instanceof Lifecycle){ loader.start(); } if(pipeline instanceof Lifecycle){ pipeline.start(); } Container[] children = findChidren(); for (Container child : children){ if(child instanceof Lifecycle){ child.start(); } } lifecycle.fireLifycycleEvent(START_EVENT, null); } lifecycle.fireLifycycleEvent(AFTER_START_EVENT, null); } //public void stop as start method }
相关文章推荐
- 【深入剖析Tomcat笔记】第二篇 ServerSocket模型
- 【深入剖析Tomcat笔记】第一篇 基础知识储备
- 【深入剖析Tomcat笔记】第五篇 Tomcat Container 与 Pipelining Tasks
- [笔记]深入剖析Tomcat-servlet容器和连接器
- 【深入剖析Tomcat笔记】第三篇 基本容器模型
- 【深入剖析Tomcat笔记】第六篇 Tomcat Lifecycle
- 【深入剖析Tomcat笔记】第四篇 默认连接器
- [笔记]深入剖析Tomcat-tomcat的默认连接器,servlet容器
- 深入理解 Tomcat(六)源码剖析Tomcat 启动过程----生命周期和容器组件
- 深入剖析tomcat 笔记——第8章 载入器
- 深入理解 Tomcat(九)源码剖析之请求过程
- 第十一篇:深入剖析socket——TCP套接字的生命周期
- 深入剖析Spring(三)——Bean的生命周期
- 娃娃鸭深入核心VCL架构剖析(李维)笔记
- 深入剖析Tomcat
- 深入剖析Hadoop程序日志
- Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 部署错误: 启动 Tomcat 失败。-- '127.0.0.1' 不是内部或外部命令,也不是可运行的程序
- Rust租借和生命周期深入剖析
- .NET深入学习笔记(1):DataSet和SqlDataReader性能差异深入剖析与测试(1)
- 深入剖析Tomcat-第二章:一个简单的servlet容器(1)