プロジェクトにクォーツを使用したいのですが、いくつかの機能が不足しているようです。私が必要とするのは非常に単純で、実行が終了した後に別のジョブを起動することです。これは理想的には保存されたトリガーで行われますが、クォーツは時間ベースのトリガーのみを考慮し、他の種類のトリガーは考慮しません。クォーツのジョブ依存システムのようなものを探しています。
実際には、他のジョブの終了、ファイルの変更、データベース テーブルの更新など、多くのトリガーが存在するはずです。
5 秒間待機するジョブを次に示します。
public class JobA implements Job, JobListener {
public static final String LISTENER_NAME = "JobA";
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Job A, Waiting for 5 seconds");
try {
Thread.sleep(5L * 1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Done waiting");
}
public String getName() {
return LISTENER_NAME;
}
public void jobExecutionVetoed(JobExecutionContext context) {
//TODO
}
public void jobToBeExecuted(JobExecutionContext context) {
String jobName = context.getJobDetail().getKey().toString();
System.out.println("Job : " + jobName + " is going to start...");
}
public void jobWasExecuted(JobExecutionContext context,
JobExecutionException jobException) {
// System.out.println("jobWasExecuted");
String jobName = context.getJobDetail().getKey().toString();
System.out.println("Job : " + jobName + " is finished...");
if (!jobException.getMessage().equals("")) {
System.out.println("Exception thrown by: " + jobName
+ " Exception: " + jobException.getMessage());
}
JobKey jobKey = new JobKey("JobA", "group1");
try {
context.getScheduler().triggerJob(jobKey);
} catch (SchedulerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
context.getScheduler().triggerJob(jobKey) 行は機能しません。完全なジョブ、再帰的なジョブを追加しようとしましたが、何も機能しないようです。このリスナーの使用中に別のジョブを起動するにはどうすればよいですか?