TData
- このクラスが読み込んだデータの型public class ResumeDataReader<TData> extends java.lang.Object implements DataReader<TData>
本クラスは、ラップしたデータリーダのread
メソッドの実行回数を、
正常に処理できたポイントとして実行管理テーブルに保存する。
正常に処理できたポイントは業務処理がコミットされるタイミングで保存される。
業務処理が失敗しトランザクションがロールバックされる場合、正常に処理できたポイントの保存は行われない。
障害発生時などに処理を再実行する場合、本クラスは正常に処理できたポイントまでのファイル読み込み(業務処理)をスキップし、
再開ポイント(正常に処理できたポイントの次のポイント)からファイル読み込みを再開する。
そのため、再開ポイント以前のデータに対してパッチを当てた際は、正常に処理できたポイントを0クリアする必要がある。
なお、FileBatchAction
を継承したバッチ業務アクションを作成する場合は、
FileBatchAction
がデフォルトでValidatableFileDataReader
をラップしたResumeDataReader
を生成するので、
アプリケーションプログラマが上記2つのオブジェクトを生成するコードを実装する必要はない。
FileDataReader
,
ResumePointManager
DataReader.NoMoreRecord
Constructor and Description |
---|
ResumeDataReader() |
Modifier and Type | Method and Description |
---|---|
void |
close(ExecutionContext ctx)
このリーダの利用を停止し、内部的に保持している各種リソースを解放する。
|
boolean |
hasNext(ExecutionContext ctx)
次に読み込むデータが存在するかどうかを返却する。
|
protected int |
loadResumePoint()
正常に処理できたポイントを取得する。
レジューム機能が無効になっている場合は0を返す。
|
TData |
read(ExecutionContext ctx)
レジューム機能を追加するデータリーダからデータを読み込む。
データを読み込んだ回数を正常に処理できたポイントとして実行管理テーブルに保存し、
処理再開時にはその次のポイントから読み込みを再開する。
トランザクションループ制御ハンドラの設定により一定件数ごとにコミットを行なっている場合は、 コミット前の最後の処理で正常に処理できたポイントを実行管理テーブルに保存する。 次に読み込むデータが存在しない場合は null を返す。 |
protected void |
readToResumePoint(ExecutionContext ctx)
レジューム機能が有効になっている場合、正常に処理できたポイントまでのレジュームを行う。
|
protected void |
saveResumePoint()
正常に処理できたポイントを保存する。
レジューム機能が無効になっている場合は何もしない。
|
ResumeDataReader<TData> |
setSourceReader(DataReader<TData> sourceReader)
レジューム機能を追加するデータリーダを設定する。
|
public TData read(ExecutionContext ctx)
null
を返す。read
in interface DataReader<TData>
ctx
- 実行コンテキストpublic boolean hasNext(ExecutionContext ctx)
hasNext
in interface DataReader<TData>
ctx
- 実行コンテキストtrue
public void close(ExecutionContext ctx)
close
in interface DataReader<TData>
ctx
- 実行コンテキストprotected void readToResumePoint(ExecutionContext ctx)
ctx
- 実行コンテキストjava.lang.IllegalStateException
- 次に読み込むデータが存在しない場合protected int loadResumePoint()
protected void saveResumePoint()
public ResumeDataReader<TData> setSourceReader(DataReader<TData> sourceReader)
sourceReader
- レジューム機能を追加するデータリーダ