0

あるステップで計算されたデータを保存し、次のステップでそれを取得する必要がある Spring Batch Job に取り組んでいます。

Springバッチソースで以下の実装を使用して、スタンドアロンの方法でこれを実現できます

http://static.springsource.org/spring-batch/reference/html/patterns.html#passingDataToFutureSteps

ただし、クライアント/マスターおよびサーバーの方法で実装しています。CLIENT/MASTER がジョブとパーティショニングに関連するコードを持っている場所。

クライアントは EAR の外にあり、バッチ ジョブを呼び出すためにシェル スクリプトによって使用されます。

クライアント側の Bean 構成:

<job id="esk956" xmlns="http://www.springframework.org/schema/batch">
    <step id="importSalesAlert-master">
        <partition handler="partitionHandler" partitioner="partitioner" />
    </step>

</job>

<bean id="partitioner"
    class="org.springframework.batch.core.partition.support.SimplePartitioner" />

ステップとその実装 (リーダー、プロセッサー、ライター) に関連するすべてのコードは、SERVER/SLAVE 側にあります。

スレーブ コード:

<step id="importSalesAlert" xmlns="http://www.springframework.org/schema/batch">
    <tasklet transaction-manager="transactionManager">
        <chunk reader="salesAlertFileItemReader" processor="nucleusItemProcessor"
            writer="nucleusItemWriter" commit-interval="10" />
        <listeners>
            <listener ref="loggingStepListener" />
        </listeners>
    </tasklet>
</step>

JMS 統合と Weblogic を Web サーバーとして使用しています。

問題を解決するためのガイドをお願いします。

4

1 に答える 1

1

パーティショナーから実行者 (ステップ) に情報を渡すには、パーティション時に stepExecutionContext で情報を設定し、遅延バインディングを使用して値を設定します。ここの例 (https://github.com/SpringSource/spring-batch/blob/master/spring-batch-samples/src/main/resources/jobs/partitionJdbcJob.xml) を見て、特に値を見てください。${stepExecutionContext[minValue]}アイテムリーダーで。この値は、パーティショナーによって設定された stepExecutionContext からのものです。

同様に、jobExecutionContext や jobParameters と同じように、他の遅延バインディング変数にアクセスすることもできます。itemreaderscope="step"のルート要素に属性があり、名前空間を使用して jobRepository を宣言する<batch:job-repository.../>か、<bean class="org.springframework.batch.core.scope.StepScope" />Bean を宣言することを確認してください (ただし、両方を持たないでください)。詳細については、こちら (http://static.springsource.org/spring-batch/reference/html-single/index.html#step-scope) を参照してください。

于 2013-01-22T12:08:05.793 に答える