Timer Serviceによって指定した時刻に処理を実行するには,EJBタイマを生成します。また,EJBタイマによる処理の実行を停止するには,EJBタイマを削除します。EJBタイマの生成,削除のタイミングは,EJBタイマの種別や,トランザクションの管理下で処理が実行されるかどうかによって異なります。ここでは,EJBタイマの生成と削除のタイミング,およびEJBタイマの生成時と削除時のタイムアウトメソッドのコールバックの動作について説明します。
EJBタイマ生成では,EJBタイマ生成メソッド(javax.ejb.TimerServiceオブジェクトのcreateTimerメソッド)によって,EJBタイマが一つ生成されます。EJBタイマが生成されると,指定した時刻にタイムアウトが発生してタイムアウトメソッドがコールバックされます。
EJBタイマ生成時に,EJBタイマを呼び出してから1回目のタイムアウトメソッドを実行するまでの時間を指定しているEJBタイマの場合,時間のカウントは,EJBタイマ生成メソッドが呼ばれた時刻を基点に開始されます。EJBタイマの生成とカウントの開始について次の図に示します。
図2-18 EJBタイマの生成とカウントの開始
EJBタイマが生成されるタイミングおよびタイムアウトメソッドがコールバックされるタイミングは,EJBタイマ生成がトランザクションの管理下で行われるかどうかによって異なります。
図2-19 EJBタイマ生成とコールバックの実行(トランザクションがコミットしたあとにタイムアウト時刻となるEJBタイマの場合)
図2-20 EJBタイマ生成とコールバックの実行(トランザクションがコミットする前にタイムアウト時刻となるEJBタイマの場合)
図2-21 EJBタイマ生成とコールバックの実行(トランザクションの管理下でない場合)
この図では,EJBタイマ生成メソッドが呼ばれた直後にEJBタイマが生成されます。そのあと,指定した時刻どおりにタイムアウトメソッドがコールバックされます。
Timer Serviceを使用している場合に,J2EEサーバ起動時にEJBタイマを自動で生成する方法について説明します。EJBタイマの自動生成には次の方法があります。
Timer Serviceの機能については,「2.12.1 Timer Serviceの概要」を参照してください。