Package nablarch.fw.handler.retry
Class RetryContextSupport
java.lang.Object
nablarch.fw.handler.retry.RetryContextSupport
- All Implemented Interfaces:
RetryHandler.RetryContext
- Direct Known Subclasses:
CountingRetryContext
,TimeRetryContext
RetryHandler.RetryContext
の実装をサポートするクラス。- Author:
- Kiyohito Itoh
-
Constructor Summary
ModifierConstructorDescriptionprotected
RetryContextSupport
(long maxRetryTime, long retryIntervals) コンストラクタ。 -
Method Summary
Modifier and TypeMethodDescriptionprotected void
assertMaxRetryTime
(long maxRetryTime, long minRetryTime) 最長リトライ時間の設定値が正しいことを表明する。int
現在のリトライ回数を取得する。boolean
リトライ可能か否かをリトライ状態から判定する。protected abstract boolean
リトライ可能か否かをリトライ状態から判定する。void
リトライ前の準備を行う。void
reset()
リトライ状態をリセットする。
-
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 interfaceRetryHandler.RetryContext
- Returns:
- 現在のリトライ回数
-
isRetryable
public boolean isRetryable()リトライ可能か否かをリトライ状態から判定する。 現在のリトライ経過時間が最長リトライ時間を超えている場合は、reset()
メソッドを呼び出し、リトライ状態をリセットする。 判定処理はonIsRetryable()
メソッドに委譲する。- Specified by:
isRetryable
in interfaceRetryHandler.RetryContext
- Returns:
- リトライ可能な場合はtrue
-
onIsRetryable
protected abstract boolean onIsRetryable()リトライ可能か否かをリトライ状態から判定する。- Returns:
- リトライ可能な場合はtrue
-
prepareRetry
public void prepareRetry()リトライ前の準備を行う。下記の処理を行う。 リトライ開始時間が設定されていなければ設定する。 リトライ間隔(単位:msec)プロパティの値が0より大きい場合は、指定された時間だけ待機する。 待機中にInterruptedExceptionを捕捉した場合は、WARNレベルのログ出力のみ行い、 呼び出し元に制御を返す。 現在のリトライ回数をカウントアップする。
- Specified by:
prepareRetry
in interfaceRetryHandler.RetryContext
-
reset
public void reset()リトライ状態をリセットする。 リトライ開始時間を未設定にする。 現在のリトライ回数に0を設定する。- Specified by:
reset
in interfaceRetryHandler.RetryContext
-