1

2つのステップでジョブを構成しています。どちらのステップでも、異なるファイルを読み取り、データをデータベースにダンプする必要があります。ジョブを起動すると、最初のステップが実行されてデータが正常に保存され、2番目のステップでファイルが読み取られません。しかし、データベースでは、両方のステップステータスが成功していることがわかります。私の構成は次のようになります。

job id="job1" job-repository="jobRepository" xmlns="http://www.springframework.org/schema/batch" restartable="true">
    <step id="step1">
        <tasklet transaction-manager="transactionManager" task-executor="taskExecutor">
            <chunk reader="DomainItemReader" writer="DomainItemWriter" commit-interval="40" skip-limit="10">
                <skippable-exception-classes>
                    <include class="java.lang.Exception"/>
                    <exclude class="java.io.FileNotFoundException"/>
                </skippable-exception-classes>
                <listeners>
                    <listener ref="MyListener"/>
                </listeners>
            </chunk>
        </tasklet>
        <next on="COMPLETED" to="step2"/>
    </step>
    <step id="step2" >
        <tasklet transaction-manager="transactionManager" task-executor="taskExecutor" allow-start-if-complete="true">
            <chunk reader="DomainItemReader2" writer="DomainItemWriter2" commit-interval="100" skip-limit="10">
                <skippable-exception-classes>
                    <include class="java.lang.Exception"/>
                    <exclude class="java.io.FileNotFoundException"/>
                </skippable-exception-classes>
                <listeners>
                    <listener ref="MyListener2"/>
                </listeners>
            </chunk>
        </tasklet>
    </step>
</job> 

そして私の読者は次のようになります:

<bean id="billDomainItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
    <property name="resource" value="file:./firstfile.txt" />
    <property name="linesToSkip" value="1" />
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                        <property name="delimiter">
                        <util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
                    </property>
                </bean>
            </property>
            <property name="fieldSetMapper">
                <bean class="com.abc.DomainMapper">
                    <property name="accessJobParam" ref="accessJobParam"/>
                </bean>
            </property>
        </bean>
    </property>
</bean>

そして私の2番目のステップのリーダーは次のようになります:

<bean id="DomainItemReader2" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
    <property name="resource" value="file:./secondFile.txt" />
    <property name="linesToSkip" value="1" />
    <property name="lineMapper">
        <bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
            <property name="lineTokenizer">
                <bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
                    <!-- <property name="names" value="PRODUCT_ID,NAME,DESCRIPTION,PRICE" />-->
                    <property name="delimiter">
                        <util:constant static-field="org.springframework.batch.item.file.transform.DelimitedLineTokenizer.DELIMITER_TAB"/>
                    </property>
                </bean>
            </property>
            <property name="fieldSetMapper">
                <bean class="com.abc.DomainMapper2">
                    <property name="accessJobParam" ref="accessJobParam"/>
                </bean>
            </property>
        </bean>
    </property>
</bean>

どこで間違っているのか、なぜ2番目のステップのファイルを処理していないのかを教えてください。ありがとう

4

2 に答える 2

1

私は削除しました

allow-start-if-complete="true"`

私の2番目のステップから追加しました

parent="step1" 

私の2番目のステップで、それは私にとってはうまくいきます。

于 2012-12-24T13:37:10.557 に答える
0

2番目のリーダー構成

<property name="fieldSetMapper">
                <bean class="com.DomainMapper2">
                    <property name="accessJobParam" ref="accessJobParam"/>
                </bean>
            </property>

Beanクラスのマッピングを確認してください<bean class="com.DomainMapper2">

このBeanは同じパッケージですか、それとも別のパッケージですか<bean class="com.abc.DomainMapper2">

于 2012-12-24T07:19:50.870 に答える