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);
}
}
}
}