-1

次のエラーをスローせずに adojobstore を作成するにはどうすればよいですか。

 Unable to store job because one already exists with this identification.

データベースから読み取り、ジョブが存在しないかどうかを確認してからスケジューラに追加できますか? それは推奨される方法ですか?

Azure でスケジューラをシャットダウンする必要がありますか?

4

1 に答える 1

2

AdoJobStore を使用しているため、DB にジョブを保存しているため、ジョブをスケジュールする前にテーブル内のジョブの存在を個別に確認できます。それ以外の場合は、同じ JobID で AddJob を使用し、永続的なジョブを作成してください。

再利用できるジョブは永続的でなければなりません。つまり、ジョブがスケジュールされていなくてもジョブは存在し続けます。つまり、ジョブにトリガーが関連付けられていません。永続ジョブの例は次のとおりです。

dJob = new JobDetail("consolidate-attendance", "daily-attendance-group", 
              ConsolidateAttendance.class,
              /* volatile */ false, 
              /* durable */ true,
              /* recover */ false);
sched.addJob(jobContext, dJob, false);

ScheduleJob には 2 つのバージョンがあり、1 つはトリガー付きの受け入れジョブ、もう 1 つはジョブであるため、どちらを使用するかを確認する必要があります。すでにジョブを定義している場合、ジョブとトリガーの両方を受け入れる ScheduleJob を使用することはできません。これは、スケジューラーが内部的にジョブをそれ自体に追加しようとして失敗するためです。

ジョブがすでに定義されている場合は、Trigger クラスを介してジョブをトリガーにバインドし、トリガーのみを受け入れる scheduleJob を使用するだけです。

これは機能するはずであり、スケジューラをシャットダウンする必要はありません。

于 2012-06-26T21:02:25.113 に答える