パーシスタント・タイマー用のエンタープライズ JavaBeans タイマー・サービスの構成
パーシスタント EJB タイマー用に EJB タイマー・サービスを構成して、タイマーの保管場所であるデータ・ソース、タイムアウト・コールバック・メソッド呼び出しが失敗したときのタイマー再試行間隔および再試行回数を制御できます。
このタスクについて
ejbPersistentTimer フィーチャーが有効にされるときには、 タイマーを永続化するためのデータ・ソースが構成される必要があり、そうしないとパーシスタント・タイマーを使用しようとしても失敗します。EJB タイマー・サービスでの使用のために DefaultDataSource は構成されているが他の特定のデータ・ソースが構成されていない場合、EJB タイマー・サービスは DefaultDataSource を使用します。
また、EJB タイマー・サービスは、パーシスタント・タイマーのタイムアウト・コールバック・メソッド呼び出しが失敗すると、 タイムアウト・コールバック・メソッドが正常に完了するまで 5 分ごとに再試行します。
パーシスタント・タイマーの構成には、以下のオプションを使用します。
- スケジュールされた EJB パーシスタント・タイマー executor
パーシスタント・タイマーの動作を制御するパーシスタント executor への参照を指定します。デフォルト・インスタンス defaultEJBPersistentTimerExecutor が用意されていて、 これはパーシスタント・ストアとして DefaultDataSource を使用します。スケジュールされた EJB パーシスタント・タイマー executor への参照をカスタム構成に変更したり、 デフォルト・インスタンスをオーバーライドして特定の値を変更したりできます。パーシスタント executor に使用可能なオプションは以下のとおりです。
- 再試行限度
失敗したタイムアウト・コールバック・メソッドが再試行される最大回数を指定します。 再試行でタイムアウト・コールバック・メソッドが成功すると、サーバーは試行を停止します。再試行が失敗する場合、 タイムアウト・コールバック・メソッドが成功するか、再試行限度に達するまで、サーバーは再試行を続けます。再試行限度に達したら、 それまでの試行が成功しなかった場合でも、サーバーはタイムアウト・コールバック・メソッドを実行しようとはしません。デフォルト値 -1 は、 再試行が無制限であることを示します。値 0 は、再試行がないことを示し、EJB 仕様に準拠していません。1 以上の値は、特定の再試行回数を示します。
非パーシスタント・タイマーに対するタイムアウト・コールバック・メソッド再試行回数の構成を変更することは、 スケジュールされた回ごとに非パーシスタント・タイマーが完了することを必要としないアプリケーションに有用です。例えば、 5 分ごとに実行するようスケジュールされた非パーシスタント・インターバル・タイマーをアプリケーションで作成する場合、 再試行回数を 0 と構成すると、タイマーは、成功か失敗かにかかわらず、5 分ごとに 1 回実行されます。
- 再試行間隔
タイムアウト・コールバック・メソッドが失敗した場合に行う再試行の間隔を指定します。この値に構成された間隔にかかわらず、 最初の再試行は必ず即時に発生します。それ以降のすべての再試行は、この値に指定された間隔だけ待機します。値 0 は、 すべての再試行が即時であることを示します。1 以上の値は、指定されたその秒数だけ再試行が待機する必要があることを示します。デフォルトは、 300 秒です。
非パーシスタント・タイマーに対して別の再試行時間間隔を構成することは、 スケジュールした時刻より前にタイムアウト・コールバック・メソッドが完了することが重要なアプリケーションに有用です。この手法は、 タイムアウト・コールバック・メソッドを使用可能にするために、再試行間隔をもっと遅くまでにするなど、 タイマー完了の遅延を許容できるアプリケーションでも利用可能であり、それによってアプリケーションが正常に実行される可能性を高めることができます。
- パーシスタント・タスク・ストア
どのデータ・ソースが使用されるのかを指定します。デフォルト・インスタンス defaultDatabaseStore が用意されていて、 これはパーシスタント・ストアとして DefaultDataSrouce を使用します。