kagamihogeの日記

kagamihogeの日記です。

jBatchでxJCL invalid per schemaとかいうエラー

環境

やったこと

jBatchのjob.xmlをこんな感じに書いたらエラーになって動かなかった。

<reducer ref="myReducer" />
<collector ref="myCollector" />
<analyzer ref="myAnalyzer" />

スローされる例外はこんな感じ。

javax.batch.operations.JobStartException: java.lang.IllegalArgumentException: xJCL invalid per schema

原因とか

それぞれの順番を下記のように書かないといけない。

<collector ref="myCollector" />
<analyzer ref="myAnalyzer" />
<reducer ref="myReducer" />

jBatch仕様のJSLのXSDを見るとこうなってるんで、順番通りに書かないとxmlのパース時にエラーとなるのが見て取れる。

    <xs:complextype name="Partition">
        <xs:sequence>
            <xs:element name="collector" type="jsl:Collector" minoccurs="0" maxoccurs="1">
            </xs:element>
            <xs:element name="analyzer" type="jsl:Analyzer" minoccurs="0" maxoccurs="1">
            </xs:element>
            <xs:element name="reducer" type="jsl:PartitionReducer" minoccurs="0" maxoccurs="1">
            </xs:element>
        </xs:sequence>
    </xs:complextype>