码迷,mamicode.com
首页 > 其他好文 > 详细

Jetty - LifeCycle源码分析

时间:2018-01-25 19:52:52      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:stop   int   很多   cep   failed   listener   启动   opp   catch   

1. 描述

基于Jetty-9.4.8.v20171121。

LifeCycle主要管理Jetty里面通用组件的生命周期,比如组件启动中、启动、运行中、停止中、停止等,实现该接口就可以定义一套生命周期。其中通用组件比如Server,Connector,Handler等,Jetty把很多对象当成组件来管理,很多组件具有生命周期。

1.1 API

@ManagedObject("Lifecycle Interface for startable components")
public interface LifeCycle
{
    // 启动组件
    @ManagedOperation(value="Starts the instance", impact="ACTION")
    public void start()
        throws Exception;

    // 停止组件,组件可以等待当前的活动正常完成,但是它可以被中断。
    @ManagedOperation(value="Stops the instance", impact="ACTION")
    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);
 
    // 监听器,监听Lifecycle事件
    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);
    }
    
    // 如果object实例是一个Lifecycle对象,则启动。如果异常统一转换为RuntimeException
    public static void start(Object object)
    {
        if (object instanceof LifeCycle)
        {
            try
            {
                ((LifeCycle)object).start();
            }
            catch(Exception e)
            {
                throw new RuntimeException(e);
            }
        }
    }
    
   // 如果object实例是一个Lifecycle对象,则停止。如果异常统一转换为RuntimeException
    public static void stop(Object object)
    {
        if (object instanceof LifeCycle)
        {
            try
            {
                ((LifeCycle)object).stop();
            }
            catch(Exception e)
            {
                throw new RuntimeException(e);
            }
        }
    }
}

  

 

Jetty - LifeCycle源码分析

标签:stop   int   很多   cep   failed   listener   启动   opp   catch   

原文地址:https://www.cnblogs.com/lujiango/p/8352761.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!