2017-11-17 9 views
0

私はマネージドビーンから1つのジョブの実行を停止しようとしています。具体的には、私は仕事のインスタンスを取得し、次のようにジョブ・インスタンスを停止することができるよ:JobOperatorを介してJobInstanceを停止

 JobOperator operator = BatchRuntime.getJobOperator(); 
     List<Long> re = operator.getRunningExecutions("JobName"); 
     for (Long runningExecution: re) { 
      operator.stop(runningExecution); 
     } 

をたとえそうだとしても、それは実行を継続することを、インスタンスの実行を介して有効になりません。実際に、ジョブ・インスタンスを再度取得しようとすると、メソッドgetRunningExecutionsが要素を戻さないため、有効ではありません。このように、誰かが私が間違っていることを教えてもらえますか?

ありがとうございます。

+0

ジョブを停止すると、 'RUNNING'状態から 'STOPPING'状態に移行し、 'STOPPING'状態は永遠に続くことがわかります。 –

答えて

0

getRunningExecutionsは、ジョブの実行がSTOPPING状態にある可能性があり、実行の実行を検討していないため空を返します。

各ジョブの実行時にgetBatchStatus()に電話して、正確なバッチステータスを確認してください。現在のステップがバッチレットタイプのステップである場合、バッチレットクラスは、作業を適切に停止するためにstop()メソッドを実装する必要があります。

+0

こんにちは。私はメソッドstop()を実装し、内部メソッドstop()をブール変数に値を移動することを解決しました - > boolean shouldStop = true;どうもありがとうございました。 –

+0

私はこのブール値は通常、「揮発性」としてマークする必要があると思います。 –

関連する問題