11.4 アプリケーション実装時の注意事項
Java Batch 1.0標準仕様では,Batch Artifactから例外が挙がった場合の挙動が規定されていないため,各ベンダのアプリケーションサーバによって動作が異なるおそれがあります。
アプリケーションサーバでBatch Artifactから例外が挙がった場合の挙動と,ベンダ間ポータビリティ確保のためにアプリケーションに求められる注意事項を次に示します。
-
closeメソッド内の処理は,openメソッドが必ず呼ばれていることを前提とした処理にしないでください。ItemReaderのopenメソッドが呼び出される前に,同じItemReaderのcloseメソッドが呼び出されることがあります。
-
closeメソッド内の処理は,openメソッドが必ず呼ばれていることを前提とした処理にしないでください。ItemWriterのopenメソッドが呼び出される前に,同じItemWriterのcloseメソッドが呼び出されることがあります。
-
closeメソッドが必ず1度だけ呼び出されることを前提とした処理にしないでください。ItemReaderまたはItemWriterのcloseメソッドが2回以上呼び出されることがあります。
-
beforeReadメソッドの処理は,afterReadメソッドが呼び出されることを前提とした処理にしないでください。ItemReadListenerのbeforeReadメソッドが呼び出されたあとに,同じItemReadListenerのafterReadメソッドが呼び出されないことがあります。
-
beforeProcessメソッドの処理は,afterProcessメソッドが呼び出されることを前提とした処理にしないでください。ItemProcessListenerのbeforeProcessメソッドが呼び出されたあとに,同じItemProcessListenerのafterProcessメソッドが呼び出されないことがあります。
-
beforeWriteメソッドの処理は,afterWriteメソッドが呼び出されることを前提とした処理にしないでください。ItemWriteListenerのbeforeWriteメソッドが呼び出されたあとに,同じItemWriteListenerのafterWriteメソッドが呼び出されないことがあります。
-
beforeChunkメソッドの処理は,afterChunkメソッドが呼び出されることを前提とした処理にしないでください。ChunkListenerのbeforeChunkメソッドが呼び出されたあとに,同じChunkListenerのafterChunkメソッドが呼び出されないことがあります。
-
onErrorメソッド内の処理は,beforeChunkメソッドが必ず呼ばれていることを前提とした処理にしないでください。ChunkListenerのbeforeChunkメソッドが呼び出される前に,同じChunkListenerのonErrorメソッドが呼び出されることがあります。
-
ChunkListenerのafterChunkメソッドとonErrorメソッドのどちらか一方だけが呼び出されることを前提とした処理にしないでください。両方呼び出されることがあります。
-
beginCheckPointメソッドの処理は,endCheckPointメソッドやcheckPointInfoメソッドが呼び出されることを前提とした処理にしないでください。CheckpointAlgorithmのbeginCheckPointメソッドが呼び出されたあとに,同じCheckpointAlgorithmのendCheckPointメソッドや,ItemReader,ItemWriterのcheckPointInfoメソッドが呼び出されないことがあります。
-
afterPartitionedStepCompletionメソッド内の処理は,beforePartitionedStepCompletionメソッドまたはrollbackPartitionedStepメソッドが呼ばれていることを前提とした処理にしないでください。PartitionReducerのbeforePartitionedStepCompletionメソッドまたはrollbackPartitionedStepメソッドが呼び出される前に同じPartitionReducerのafterPartitionedStepCompletionメソッドが呼び出されることがあります。
-
PartitionReducerの各メソッドの処理は,rollbackPartitionedStepメソッドが呼び出されることを前提とした処理にしないでください。PartitionReducerの各メソッドで例外が発生した場合に,rollbackPartitionedStepメソッドが呼び出されないことがあります。
-
beforeStepメソッドの処理は,afterStepメソッドが呼び出されることを前提とした処理にしないでください。StepListenerのbeforeStepメソッドが呼び出されたあとに,同じStepListenerのafterStepメソッドが呼び出されないことがあります。