Class RequestThreadLoopHandler

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

public class RequestThreadLoopHandler extends Object implements Handler<Object,Object>
各サブスレッド上のループ毎にリクエスト処理を実行するハンドラ。

本クラスは、サーバソケットや受信電文キュー等を監視し、リアルタイム応答を行う サーバ型プロセスで使用するハンドラである。 サーバ型プロセスでは、マルチスレッドハンドラが生成する各サブスレッド上で 次のループを繰り返す。

データリーダによるリクエストの受信 → リクエスト処理の実行 → 次のリクエストの待機
本ハンドラではこの形態のループ制御を行う。 サーバ型処理では、バッチ処理とは異なり、個々のリクエスト処理は完全に独立しており、 1つのリクエスト処理がエラーとなっても他のリクエスト処理はそのまま継続しなければならない。 このため、本ハンドラで捕捉した例外は、プロセス正常停止要求や致命的な一部の例外を除き リトライ可能例外RetryableExceptionとして再送出する。
  • Constructor Details

    • RequestThreadLoopHandler

      public RequestThreadLoopHandler()
  • Method Details

    • handle

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

      public RequestThreadLoopHandler setServiceUnavailabilityRetryInterval(int msec)
      後続ハンドラから閉局中例外が送出された場合に、次のリクエスト処理を開始するまでに待機する時間を設定する。 設定値が0以下の場合は、待機せずに即時リトライを行なう。 デフォルトの設定値は1000msecである。
      Parameters:
      msec - 閉局エラー中の各スレッド待機時間 (単位: msec)
      Returns:
      このオブジェクト自体