Cosminexus 機能解説

[目次][用語][索引][前へ][次へ]

5.10.1 Timer Serviceの概要

Timer Serviceで設定できるタイムアウトやTimer Serviceのサポート範囲,Timer Serviceでのトランザクション管理について説明します。

<この項の構成>
(1) Timer ServiceとEJBタイマ
(2) EJBタイマの種別
(3) Timer Serviceのサポート範囲
(4) Timer Serviceでのトランザクション管理

(1) Timer ServiceとEJBタイマ

Timer Serviceは,J2EEに規定されたAPIを使用して,Enterprise Beanから操作します。時刻を指定した処理を行うには,EJBタイマを生成します。EJBタイマにはタイムアウト時刻を指定します。生成されたEJBタイマは,EJBコンテナに管理され,タイムアウト時刻になると,EJBコンテナによってEnterprise Beanのメソッドがコールバックされます。この際にコールバックされるメソッドを,タイムアウトメソッドと呼びます。

Timer Serviceの処理の概要を次の図に示します。

図5-15 Timer Serviceの処理の概要

[図データ]

(2) EJBタイマの種別

EJBタイマに設定できるタイマ種別には次の2種類があります。

EJBタイマに設定できるタイマ種別と設定例を次の表に示します。

表5-20 EJBタイマに設定できるタイマ種別と設定例

タイマ種別 設定例 説明
single-event 2006/4/15 12:00 2006/4/15 12:00にタイムアウトメソッドを1回だけ実行します。
24時間後 EJBタイマが生成されてから24時間後に,タイムアウトメソッドを1回だけ実行します。
interval 2006/4/1 12:00から24時間間隔 2006/4/1 12:00に1回目のタイムアウトメソッドを実行します。そのあと,24時間間隔でタイムアウトメソッドを繰り返し実行します。
24時間後から10時間間隔 EJBタイマが生成されてから24時間後に,1回目のタイムアウトメソッドを実行します。そのあと,10時間間隔でタイムアウトメソッドを繰り返し実行します。

single-eventタイマとintervalタイマの動作を次の図に示します。この図では,2:00にタイムアウトメソッドを1回だけコールバックするsingle-eventタイマと,2:00から2時間間隔でタイムアウトメソッドをコールバックするintervalタイマの動作を示しています。

図5-16 single-eventタイマとintervalタイマの動作

[図データ]

(3) Timer Serviceのサポート範囲

J2EEの仕様で規定されている,Timer Serviceの機能のサポート状況を次の表に示します。

表5-21 J2EEの仕様で規定されているTimer Serviceの機能のサポート状況

J2EEの仕様で規定されているTimer Serviceの機能 サポート状況
トランザクション
EJBタイマ永続性 ×
TimerServiceオブジェクトの取得(DI,JNDIルックアップ,EJBContext)
タイムアウトメソッドの指定(アノテーション,TimedObject実装)
タイムアウトメソッドの指定(DDによる指定) ×

(凡例) ○:利用できる ×:利用できない

注※ 障害などでJ2EEサーバを再起動したときは,再起動前に使用していたEJBタイマは引き継がれません。J2EEサーバ起動時にEJBタイマを自動で生成する場合は,「付録E J2EEサーバ起動時のEJBタイマの自動生成」を参照してください。


Enterprise Beanの種別ごとに,Timer Serviceの機能のサポート状況を次の表に示します。

表5-22 Enterprise Beanの種別ごとの,Timer Serviceの機能のサポート状況

Timer Serviceの機能 Message-driven Bean Session Bean Entity Bean
Stateful Session Bean Stateless Session Bean
TimerServiceオブジェクトの取得 × ×
Timer Serviceに関するオブジェクト(TimerService,Timer,TimerHandle)の操作 × ×

(凡例) ○:利用できる ×:利用できない −:利用できない(J2EE仕様)


(4) Timer Serviceでのトランザクション管理

Timer Serviceは,トランザクションをサポートしています。具体的には,EJBタイマの生成,EJBタイマの削除,およびタイムアウトメソッドがトランザクションに対応しています。ここでは,タイムアウトメソッドのトランザクション管理について説明します。

EJBタイマの生成とEJBタイマの削除については,「5.10.2 EJBタイマの生成と削除」を参照してください。

(a) タイムアウトメソッドに設定できるトランザクション属性

タイムアウトメソッドには,トランザクション管理にBMTまたはCMTを選択できます。

CMTの場合に,タイムアウトメソッドに指定できるトランザクション属性を次に示します。

これ以外の属性が指定された場合,J2EEアプリケーションの開始に失敗します。

(b) タイムアウトメソッドのコールバックに対するトランザクション管理

タイムアウトメソッドに,CMTでRequired属性またはRequiresNew属性を指定した場合,タイムアウトメソッドのコールバック中にトランザクションがロールバックすると,コールバックをリトライします。コールバックのリトライについては「5.10.3(1)(b) タイムアウトメソッドのコールバックリトライ」を参照してください。