1

プロジェクトにクォーツを使用したいのですが、いくつかの機能が不足しているようです。私が必要とするのは非常に単純で、実行が終了した後に別のジョブを起動することです。これは理想的には保存されたトリガーで行われますが、クォーツは時間ベースのトリガーのみを考慮し、他の種類のトリガーは考慮しません。クォーツのジョブ依存システムのようなものを探しています。

実際には、他のジョブの終了、ファイルの変更、データベース テーブルの更新など、多くのトリガーが存在するはずです。

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) 行は機能しません。完全なジョブ、再帰的なジョブを追加しようとしましたが、何も機能しないようです。このリスナーの使用中に別のジョブを起動するにはどうすればよいですか?

4

0 に答える 0