JBoss AS 6のサービス状態説明

2977 ワード

(本明細書のソースコードバージョンはJBoss-AS-Final 6.1.0)
JBossのサービスステータスはLifecycleStateクラスに定義されます.
全部で8つの状態:INSTANCIATED,PRE_INIT, INITIALIZED, IDLE, STARTING, STARTED, STOPPING, STOPPED
以下、それぞれ説明する.
一、INSTANCIATED
1つのサービスの最も原始的な状態は、1回だけです.他の状態に入ると、二度とこの状態に戻らない.
この状態はAbstractServerの構築方法の最後の行に設定されています.
this.state = LifecycleState.INSTANCIATED;

メソッドを構築した後にinitialize()メソッドが実行されるため,この状態ではサービスはまだ初期化されていない.
多くのJBossのエラーでは、この状態がよく見られます.
この言葉の字面の意味は簡単に理解されます:実例化して、実は彼の意味は:あなたのサービスはまだ最も原始的な状態で、起動されていません!
二、PRE_INIT
初期化前の準備状態:pre-initialize、AbstractServerでinitialize()メソッドを実行する場合、状態をPRE_に設定INIT.この状態は一度しかない.
この状態設定が完了するとdoInitialize()メソッドの呼び出しが開始されます.
INSTANCIATEDで-->PRE_INIT間ではconfigurationが空であるか否かの判断が完了し,このときのconfigurationはインスタンス化されたばかりのBasicJBossASServerConfigオブジェクトである.
INSTANCIATEDとは異なり、PRE_を設定INITステータス使用
 
this.setState(LifecycleState.PRE_INIT);
 

state状態の設定に加えて、ライフサイクルの変化イベントもトリガーされます.
 
      this.state = state;

      final Set<LifecycleEventHandler> handlers = this.getHandlersForEvent(state);
      for (final LifecycleEventHandler handler : handlers)
      {
            handler.handleEvent(state);
      }
 

AbstractJBossASServerBaseのdoInitialize()メソッドでは、STARTおよびSTOPイベントが登録されています.
 
final LifecycleEventHandler startHandler = new KernelStartEventLifecycleEventHandler(this);
final LifecycleEventHandler stopHandler = new KernelStopEventLifecycleEventHandler(this);
this.registerEventHandler(startHandler, LifecycleState.STARTED);
this.registerEventHandler(stopHandler, LifecycleState.STOPPING);
 

三、INITIALIZED
初期化が完了すると、AbstractServerとそのサブクラスのdoInitialize()メソッドがすべて実行され、initialize()に戻ってPRE_INIT状態がINITIALIZEDになります.この状態は一度しかない.
使用しています
 
this.setState(LifecycleState.INITIALIZED);
 

四、IDLE
アイドル状態は、まだ起動していないか、起動を待っていることを示します.最初はこの状態がINITIALIZED状態に続いて設定されていました.
 
 this.setState(LifecycleState.INITIALIZED);
 this.setState(LifecycleState.IDLE);
  

もう一つの状態がIDLEに変わったのはSTOPEDです.
 
  this.setState(LifecycleState.STOPPED);
  this.setState(LifecycleState.IDLE);
 

五、STARTING
起動中で、まだ起動が完了していません.
AbstractServerのStartServer Taskでは、STARTINGステータスが設定されています.
setState(LifecycleState.STARTING);
六、STARTED
起動が完了し、サービスの状態です.
この状態は、AbstractServerのStartServerTaskがdoStart()などのメソッドを完了した後、最後に設定されます.
同時に、KernelStartEventLifecycleEventHandlerイベント処理もトリガーされました!
これは並列処理メカニズムです.
STARTEDはSTOPPINGに変換できます.
七、STOPPING
止まっていますが、まだ完成していません.
同時に、KernelStopEventLifecycleEventHandlerイベント処理もトリガーされました!
この状態はSTOPPEDに遷移する.
八、STOPPED
停止完了.その後IDLE状態に移行します.
以上の状態はINSTANCIATED,IDLE,STARTED,STOPPEDの状態のみが安定しており,我々がよく見るのはこの4つの安定した状態のみである.
他の状態はプログラム実行中に安定状態に遷移するため,これらの不安定状態は我々には得られない.