春のバッチ管理プロジェクト (1.3.0.RC1) があり、TaskScheduler が cron 式を使用してジョブを実行できるようにしようとしています。
春のバッチ管理用のプロジェクトが 1 つあり、バッチ ジョブを含む別のプロジェクトがあります。管理コンソールから手動で問題なくジョブを実行できます(つまり、問題なくロードされ、機能します)。ただし、ジョブはcronスケジュールで実行されることはありません。
main メソッドを使用して Java クラスを構成し、同じジョブ xml ファイルを使用して Java アプリケーションとして実行すると、ジョブは cron スケジュールで実行されます (つまり、Spring バッチ管理コンソールの外部でジョブを実行します)。これにより、xml 構成に問題がないことも確認されます。
これは機能します: project2 app.java
public static void main(String[] args) {
String springConfig = "META-INF/spring/batch/jobs/scheduleTest.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(springConfig);
}
project2 META-INF/spring/jobs/scheduleTest.xml
<job id="test-job"
xmlns="http://www.springframework.org/schema/batch">
<step id="testJob">
<tasklet transaction-manager="transactionManager" ref="testOutput"/>
</step>
</job>
<bean id="testOutput" class="com.default.test.testOutput" />
<task:scheduled-tasks>
<task:scheduled ref="runIt" method="run" cron="30 * * * * ?" />
</task:scheduled-tasks>
<bean id="runIt" class="com.default.scheduler.RunScheduler">
<property name="job" ref="test-job" />
<property name="jobLauncher" ref="jobLauncher"/>
<property name="runCron" value="true" />
</bean>
ジョブは 30 秒ごとに実行され、テスト出力がコンソールに出力されます。
機能しません: Spring Batch 管理コンソールを実行すると、project2 が project1 にパッケージ化され、job.xml ファイルがクラスパスの一部になり、ジョブがコンソールに登録されて起動可能になります。コンソールから実行でき、正常に動作しますが、スケジュールされた時間に自動的に実行されません。また、手動で実行した後、スケジュールされた時間に実行を開始しません。
ここで私が間違っていることを誰かが見ていますか?任意のポインタをいただければ幸いです。または、SBA で Spring TaskScheduler (クォーツではない) を使用する例を誰かが知っていれば、それも役に立ちます。前もって感謝します。私の推測では、cron 式は、もはや存在しないか、SBA コンソールに認識されていないアプリケーション コンテキストに格納されています。