Jetty源码分析(二)---ContainerLifeCycle组件

来源:互联网 发布:衣服除皱喷雾 知乎 编辑:程序博客网 时间:2024/06/06 10:49
1.lifecycle是jetty组件的生命周期

 public void start()throws Exception;
 public void stop() throws Exception;
 public boolean isRunning();
 public boolean isStarted();
 public boolean isStarting();
 public boolean isStopping();
 public boolean isStopped();
 public boolean isFailed();
 public void addLifeCycleListener(LifeCycle.Listener listener);
 public void removeLifeCycleListener(LifeCycle.Listener listener);

 public interface Listener extends EventListener
 {
        public void lifeCycleStarting(LifeCycle event);
        public void lifeCycleStarted(LifeCycle event);
        public void lifeCycleFailure(LifeCycle event,Throwable cause);
        public void lifeCycleStopping(LifeCycle event);
        public void lifeCycleStopped(LifeCycle event);
 }

从代码上可以看出,jetty每个组件都有start,stop两个函数,六种状态starting-started-running-stopping-stopped 还有个faied状态
他还提供了监听器,可以监听六种任何状态

2.Container是jetyy是一bean管理器
 
    public boolean addBean(Object o);
    public Collection<Object> getBeans();
    public <T> Collection<T> getBeans(Class<T> clazz);
    public <T> T getBean(Class<T> clazz);
    public boolean removeBean(Object o);
    public void addEventListener(Listener listener);
    public void removeEventListener(Listener listener);

 
    public interface Listener
    {
        void beanAdded(Container parent,Object child);
        void beanRemoved(Container parent,Object child);
    }
从代码上可以看出,他提供了bean容器的操作方法,也提供了容器中beanAdd和beanRemove的监听

3.ContainerLifeCycle是lifecycle,和Container的实现
  Container部份:
       List<Bean> _beans = new CopyOnWriteArrayList<Bean>();
      他把所有的bean存到了CopyOnWriteArrayList(并发安全arrayList)中,
      并用Bean进行标记..

      enum Managed { POJO, MANAGED, UNMANAGED, AUTO }
      private static class Bean{
        private final Object _bean;
        private volatile Managed _managed = Managed.POJO;

     }
      
     Bean类有4种状态,pojo表示这类仅仅是单纯的存储
                      UNMANAGED LifeCycle组件是否启动和此Bean没任何关系,此bean启动靠自己,且不被Container.Listener监听
                      AUTO  是  系统自动判断是哪类型
                      MANAGED   LifeCycle组件已启动,他则必须启动


0 0
原创粉丝点击