Jetty - LifeCycle源碼分析
阿新 • • 發佈:2018-01-25
ext 實現 time 監聽 失敗 life 轉換 ted 通用組
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源碼分析