2017-06-23 10 views
0

以下の設定をプロジェクト内でジョブ定義に使用します。Spring Batch SkipPolicyが使用されていません

プロジェクトでは、バッチジョブはデータベースに定義されています。以下のXMLジョブ定義は、実行時にこれらのバッチジョブをすべて作成するためのテンプレートとして機能します。

これは、dataProcessorのBeanCreationExceptionの場合を除いて、正常に動作します。この例外が発生すると、スキップポリシーは呼び出されず、バッチはすぐに終了します。

その理由は何ですか? dataProcessorのすべての例外がSkipPolicyを使用するように、私は何をしなければなりませんか? 事前にどうもありがとう クリスチャン

バージョン:春-バッチ3.0.7

 <batch:job id="MassenGevoJob" restartable="true"> 
     <batch:step id="selectDataStep" parent="selectForMassenGeVoStep" next="executeProcessorStep" /> 
     <batch:step id="executeProcessorStep" 
       allow-start-if-complete="true" next="decideExitStatus" > 
       <batch:tasklet> 
           <batch:chunk reader="dataReader" processor="dataProcessor" 
            writer="dataItemWriter" commit-interval="10" 
            skip-policy="batchSkipPolicy"> 
           </batch:chunk> 
           <batch:listeners> 
            <batch:listener ref="batchItemListener" /> 
            <batch:listener ref="batchSkipListener" /> 
            <batch:listener ref="batchChunkListener" /> 
           </batch:listeners> 
         </batch:tasklet> 
       </batch:step> 
     <batch:decision decider="failOnPendingObjectsDecider" 
       id="decideExitStatus"> 
       <batch:fail on="FAILED_PENDING_OBJECTS" exit-code="FAILED_PENDING_OBJECTS" /> 
       <batch:next on="*" to="endFlowStep" /> 
     </batch:decision> 
     <batch:step id="endFlowStep"> 
       <batch:tasklet ref="noopTasklet"></batch:tasklet> 
     </batch:step> 
     <batch:validator ref="batchParameterValidator" /> 
     <batch:listeners> 
       <batch:listener ref="batchJobListener" /> 
     </batch:listeners> 
    </batch:job> 

答えて

0

、それは通常、春のバッチを開始する前に発生するのでBeanCreationExceptionは実際にスキップ可能ではありません。通常は、アプリケーションにとって致命的なエラーです(Springは、アプリケーションにとって不可欠であると定義したコンポーネントを作成できませんでした)。そのBeanの作成が​​問題の対象になっていて、それを持っていないのであれば、そのBeanの作成から生じる例外を制御できるように、そのBeanの作成をラップすることをお勧めします。たとえば、カスタムItemProcessorを作成できない場合は、FactoryBeanPassthroughItemProcessorを返す可能性があります。

+0

ありがとうございます。 私の質問は十分正確ではありませんでした。 Beanの作成例外は、dataProcessorが無効なコンストラクタ引数applicationContext.getBean(.....)を使用してBeanをインスタンス化しようとしたとき、およびアプリケーションが正常に起動した後に発生します。この場合、私はAlwaysSkipPolicyを呼び出すことを期待していましたが、そうではありません。ステップはすぐに終了します... – CGoose

関連する問題