1

すべてのエラー ログが正しいファイルに出力されるように、ロガー リスナーがアタッチされたベース ステップをセットアップしたいと考えています。

以下のセットアップは十分に単純で、http://static.springsource.org/spring-batch/reference/html/configureStep.html#mergingListsOnStep で示されている例にかなり似ていますが、 http ://www.springframework.org/schemaに従っています。 /batch/spring-batch.xsd、リスナーはステップの下ではなく、タスクレットの下に属しているようです。

<step id="baseLoggedStep">
    <listeners>
        <listener>
            <bean class="org.example...StepLogListener"/>
        </listener>
    </listeners>
</step>

<step id="myJobStep" parent="baseLoggedStep">
... 
</step>

では、正しいのは誰で、正しい xsd を使用して目的の結果を得るにはどうすればよいでしょうか?

次の基本ステップは、StepLogListenerリスナーがStepExecutionListenerを実装するトリックを行うようです。

<batch:step id="baseLoggedStep" abstract="true">
    <batch:tasklet>
        <batch:listeners>
            <batch:listener ref="stepLogListener">
                <bean class="com.bossmedia.gem.platform.batch.StepLogListener"/>
            </batch:listener>
        </batch:listeners>
    </batch:tasklet>
</batch:step>

しかし、それは最適ではなく、率直に言って完全に正しいとは言えません。これは、baseLoggedStep が TaskletStep の抽象インスタンスであることを意味します。

4

2 に答える 2

1

Spring Batch 2.1 XSD によると、最初の baseLoggedStep ステップの例を抽象化するだけです ( 5.1.2.1. Abstract Stepを参照)。

子ジョブが独自のリスナーを追加する場合、それらをマージする必要があることに注意してください (「5.1.2.2. リストのマージ」を参照)。そうしないと、抽象的な親ステップのリスナーが無視されます。

于 2011-09-01T10:43:04.980 に答える