Class ProcessResidentHandler

java.lang.Object
nablarch.fw.handler.ProcessResidentHandler
All Implemented Interfaces:
Handler<Object,Object>

public class ProcessResidentHandler extends Object implements Handler<Object,Object>
プロセスを常駐化するためのハンドラ。

本ハンドラは、プロセスを常駐化するものであり下記表の条件に従い、 後続処理の呼び出しや処理停止の判断を行う。

 -----------------------------+----------------------------------------------------------------------
 正常に処理を終了する条件     | setNormalEndExceptions(java.util.List)で設定した例外が送出された場合(サブクラス含む)
                              |
                              | 設定を省略した場合のデフォルト動作として、ProcessStopHandler.ProcessStopが発生した場合に処理を停止する。
                              | これは、本ハンドラの後続ハンドラにProcessStopHandlerを設定することにより、
                              | 安全に常駐プロセスを停止することを可能としている。
 -----------------------------+----------------------------------------------------------------------
 異常終了する条件             | setAbnormalEndExceptions(java.util.List)で設定した例外が送出された場合(サブクラス含む)
                              | または、Errorが送出された場合(サブクラス含む)
 -----------------------------+----------------------------------------------------------------------
 後続ハンドラを呼び出す条件   | 上記に該当しない例外が発生した場合は、障害通知ログを出力後に一定時間待機し、
                              | 再度後続ハンドラに処理を委譲する。
                              | また、例外が発生せずに後続ハンドラが正常に処理を終了した場合も、
                              | 一定時間待機後に再度後続ハンドラに処理を委譲する。
                              |
                              | 待機時間(データ監視間隔)は、setDataWatchInterval(int)によって設定した時間(ms)となる。
                              | 設定を省略した場合のデータ監視間隔は1000msとなる。
                              |
                              | なお、本ハンドラはサービス閉塞中例外(ServiceUnavailable)が発生した場合は、
                              | 一定時間待機後に後続ハンドラを呼び出す仕様となっている。
                              | このため、本ハンドラの後続ハンドラにServiceAvailabilityCheckHandlerを設定することにより、
                              | プロセスが開局されるまで業務処理(バッチアクション)の実行を抑制することが可能となっている。
 -----------------------------+----------------------------------------------------------------------
 
以下は、本ハンドラの設定例である。

データ監視間隔は、常駐プロセスごとに異なる値を設定する事が想定される。 常駐プロセスごとに異なる値を設定するには、下記例のように設定ファイルを記述し、 常駐プロセス起動時にデータ監視間隔を指定すれば良い。

 <!-- 常駐化ハンドラの設定 -->
 <component class="nablarch.fw.handler.ProcessResidentHandler">
   <!--
   データ監視間隔
   データ監視間隔は、プレースホルダ形式で記述しシステムプロパティの値を埋め込めるようにする。
   -->
   <property name="dataWatchInterval" value="${data-watch-interval}" />
 </component>
 
 // 常駐プロセス起動時にシステムプロパティ(-Dオプション)にデータ監視間隔を設定する。
 // 500msを設定する場合の例
 java -Ddata-watch-interval=500 ・・・
 
  • Constructor Details

    • ProcessResidentHandler

      public ProcessResidentHandler()
  • Method Details

    • handle

      public Object handle(Object data, ExecutionContext context)
      入力データに対する処理を実行する。
      Specified by:
      handle in interface Handler<Object,Object>
      Parameters:
      data - 入力データ
      context - 実行コンテキスト
      Returns:
      処理結果データ
    • setDataWatchInterval

      public void setDataWatchInterval(int dataWatchInterval)
      データ監視間隔(ミリ秒)を設定する。
      Parameters:
      dataWatchInterval - データ監視間隔(ミリ秒)
    • setNormalEndExceptions

      public void setNormalEndExceptions(List<String> normalEndExceptions)
      処理を正常に終了させる例外クラスを設定する。
      Parameters:
      normalEndExceptions - 正常に処理を終了させる例外クラス
    • setAbnormalEndExceptions

      public void setAbnormalEndExceptions(List<String> abnormalEndExceptions)
      処理を異常終了させる例外クラスを設定する。
      Parameters:
      abnormalEndExceptions - 異常終了させる例外クラス