パーシスタント・タイマー用のエンタープライズ 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 を使用します。

手順

  1. アプリケーション・サーバーを構成して、パーシスタント・タイマーをサポートする EJB フィーチャーを server.xml ファイルに含めます。
     <featureManager>
             <feature>ejbPersistentTimer-3.2</feature>
        </featureManager>
  2. server.xml ファイルで、パーシスタント・タイマーに対して特定の再試行最大回数値および再試行間隔値を使用するように EJB タイマー・サービスを構成します。 例えば、パーシスタント・タイマーが再試行間隔 10 秒で最大 3 回まで再試行するよう指定するには、以下の構成を使用します。
    <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryInterval="10s"
              retryLimit="3"/>

    この構成では、タイマーのタイムアウト・コールバック・メソッドは 4 回まで呼び出されることができます。最初の呼び出しは、スケジュールされた時刻に発生します。最初の呼び出しが失敗した場合、その失敗の直後に最初の再試行が発生します。タイムアウト・コールバック・メソッドが引き続き失敗する場合は、2 番目と 3 番目の再試行が 10 秒後と 20 秒後に発生します。

    以下の例では、失敗したタイムアウト・コールバック・メソッドは 1 回だけ再試行されます。最初の再試行は必ず即時に開始されるので、コールバック間隔は関係ありません。

    <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="1"/>
  3. server.xml ファイルで、パーシスタント・タイマー用の特定のデータ・ソースを使用するように EJB タイマー・サービスを構成します。 例えば、jdbc/timerDataSource を使用してパーシスタント・タイマーが保管される必要があることを指定するには、以下の構成を使用します。
    <databaseStore id="EJBTimerDatabaseStore" tablePrefix="EJBTimer_"/>
    <persistentExecutor id="defaultEJBPersistentTimerExecutor"
              taskStoreRef="EJBTimerDatabaseStore"/>

トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_config_ejbtimer_persistent
ファイル名: twlp_config_ejbtimer_persistent.html