これには JSR ジョブの使用が含まれるため、ジョブ仕様でタスクレット定義を使用するためのアクセス権がありません。私が与えられた指示は、ジョブ仕様に関する限り、JSR 352 機能のみをサポートすることです。
ジョブの例を次に示します。
<job id="xmlWriter" xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="1.0">
<step id="firstStep">
<chunk item-count="2">
<reader ref="DelimitedFlatFileReader">
<properties>
<!-- Reads in from file Test.csv -->
<property name="fileNameAndPath" value="#{jobParameters['readerFileNameAndPath']}" />
<property name="fieldNames" value="firstName, lastName, city" />
<property name="fullyQualifiedTargetClass" value="com.test.test.DatabaseMember" />
</properties>
</reader>
<processor ref="com.test.test.ItemProcessor" />
<writer ref="FlatFileWriter" >
<properties>
<property name="appendOn" value="true" />
<!-- Read to file demoXMLReaderFlatFileWriterOutput.txt -->
<property name="fileNameAndPath" value="#{jobParameters['writerFileNameAndPath']}" />
<property name="fullyQualifiedTargetClass" value="com.test.test.DatabaseMember" />
</properties>
</writer>
</chunk>
</step>
ItemProcessor では、たとえば、書き込みステップ中にチャンクが失敗した場合に、内部で発生するトランザクション項目のロールバックをトリガーできる何らかのタイプのコールバック/リスナーを持つことに興味があります。
したがって、良い例は、ItemProcessor で発生するある種の db または jms 操作があることです。ライター部分でチャンクが失敗した場合、この反復の一部であったアイテム プロセッサ中に発生したすべての操作 (またはアイテム数が 1 を超えるいくつか) をロールバックしたいと考えています。
jsr 仕様に基づいて利用可能なさまざまなリスナーを調べましたが、このタイプの実装を許可するものはないようです。また、Spring は、真の Spring バッチの場合のようにプロセッサをトランザクションにラップしていないようです。データベース接続を作成し、それらがトランザクション対応であるかどうかをテストする際に行ったテストでは、常に false が返されました。
私が探しているのは、完全にカスタムの実装以外でも可能であり、そうであればそれを達成する方法についてのガイダンスです。