zoukankan      html  css  js  c++  java
  • [笔记]深入剖析Tomcat-生命周期,日志记录器

    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
    }
  • 相关阅读:
    [转](五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
    [转](四)unity4.6Ugui中文教程文档-------概要-UGUI Visual Components
    [转](三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout
    [转](二)unity4.6Ugui中文教程文档-------概要-UGUI Canvas
    [转](一)unity4.6Ugui中文教程文档-------概要
    Blog List
    引用总结
    动态申请二维数组
    malloc/free
    memset
  • 原文地址:https://www.cnblogs.com/zengyou/p/2841391.html
Copyright © 2011-2022 走看看