Cosminexus 機能解説
Timer Serviceで設定できるタイムアウトやTimer Serviceのサポート範囲,Timer Serviceでのトランザクション管理について説明します。
Timer Serviceは,J2EEに規定されたAPIを使用して,Enterprise Beanから操作します。時刻を指定した処理を行うには,EJBタイマを生成します。EJBタイマにはタイムアウト時刻を指定します。生成されたEJBタイマは,EJBコンテナに管理され,タイムアウト時刻になると,EJBコンテナによってEnterprise Beanのメソッドがコールバックされます。この際にコールバックされるメソッドを,タイムアウトメソッドと呼びます。
Timer Serviceの処理の概要を次の図に示します。
図5-15 Timer Serviceの処理の概要
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タイマの動作
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仕様)
Timer Serviceは,トランザクションをサポートしています。具体的には,EJBタイマの生成,EJBタイマの削除,およびタイムアウトメソッドがトランザクションに対応しています。ここでは,タイムアウトメソッドのトランザクション管理について説明します。
EJBタイマの生成とEJBタイマの削除については,「5.10.2 EJBタイマの生成と削除」を参照してください。
タイムアウトメソッドには,トランザクション管理にBMTまたはCMTを選択できます。
CMTの場合に,タイムアウトメソッドに指定できるトランザクション属性を次に示します。
これ以外の属性が指定された場合,J2EEアプリケーションの開始に失敗します。
タイムアウトメソッドに,CMTでRequired属性またはRequiresNew属性を指定した場合,タイムアウトメソッドのコールバック中にトランザクションがロールバックすると,コールバックをリトライします。コールバックのリトライについては「5.10.3(1)(b) タイムアウトメソッドのコールバックリトライ」を参照してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.