Class RetryContextSupport

java.lang.Object
nablarch.fw.handler.retry.RetryContextSupport
All Implemented Interfaces:
RetryHandler.RetryContext
Direct Known Subclasses:
CountingRetryContext, TimeRetryContext

public abstract class RetryContextSupport extends Object implements RetryHandler.RetryContext
RetryHandler.RetryContextの実装をサポートするクラス。
Author:
Kiyohito Itoh
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    RetryContextSupport(long maxRetryTime, long retryIntervals)
    コンストラクタ。
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    assertMaxRetryTime(long maxRetryTime, long minRetryTime)
    最長リトライ時間の設定値が正しいことを表明する。
    int
    現在のリトライ回数を取得する。
    boolean
    リトライ可能か否かをリトライ状態から判定する。
    protected abstract boolean
    リトライ可能か否かをリトライ状態から判定する。
    void
    リトライ前の準備を行う。
    void
    リトライ状態をリセットする。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • RetryContextSupport

      protected RetryContextSupport(long maxRetryTime, long retryIntervals)
      コンストラクタ。
      Parameters:
      maxRetryTime - 最長リトライ時間(単位:msec)
      retryIntervals - リトライ間隔(単位:msec)
  • Method Details

    • assertMaxRetryTime

      protected void assertMaxRetryTime(long maxRetryTime, long minRetryTime)
      最長リトライ時間の設定値が正しいことを表明する。

      最短リトライ時間以下の値が最長リトライ時間に指定された場合は実行時例外を送出する。

      本メソッドはサブクラスの最長リトライ時間の設定処理において使用すること。 本メソッド呼び出し時はリトライを制御する方法に応じた最短リトライ時間を算出する必要がある。 例えば、リトライ回数によりリトライ制御する場合は、リトライ回数×リトライ間隔が最短リトライ時間となる。

      Parameters:
      maxRetryTime - 最長リトライ時間(単位:msec)
      minRetryTime - 最短リトライ時間(単位:msec)
    • getCurrentRetryCount

      public int getCurrentRetryCount()
      現在のリトライ回数を取得する。
      Specified by:
      getCurrentRetryCount in interface RetryHandler.RetryContext
      Returns:
      現在のリトライ回数
    • isRetryable

      public boolean isRetryable()
      リトライ可能か否かをリトライ状態から判定する。

      現在のリトライ経過時間が最長リトライ時間を超えている場合は、 reset()メソッドを呼び出し、リトライ状態をリセットする。

      判定処理はonIsRetryable()メソッドに委譲する。

      Specified by:
      isRetryable in interface RetryHandler.RetryContext
      Returns:
      リトライ可能な場合はtrue
    • onIsRetryable

      protected abstract boolean onIsRetryable()
      リトライ可能か否かをリトライ状態から判定する。
      Returns:
      リトライ可能な場合はtrue
    • prepareRetry

      public void prepareRetry()
      リトライ前の準備を行う。
       下記の処理を行う。
       
         リトライ開始時間が設定されていなければ設定する。
         リトライ間隔(単位:msec)プロパティの値が0より大きい場合は、指定された時間だけ待機する。
         待機中にInterruptedExceptionを捕捉した場合は、WARNレベルのログ出力のみ行い、
         呼び出し元に制御を返す。
         現在のリトライ回数をカウントアップする。
       
       
      Specified by:
      prepareRetry in interface RetryHandler.RetryContext
    • reset

      public void reset()
      リトライ状態をリセットする。

      リトライ開始時間を未設定にする。 現在のリトライ回数に0を設定する。

      Specified by:
      reset in interface RetryHandler.RetryContext