Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


2.12.8 Timer Service実装時の注意事項

Timer Serviceを実装するときの注意事項を示します。

〈この項の構成〉

(1) createTimerメソッドの引数infoの指定

TimerオブジェクトのgetInfoメソッドは,TimerServiceオブジェクトのcreateTimerメソッドの引数infoまたはTimerConfigオブジェクトのコンストラクタメソッドの引数infoに指定されたオブジェクト自体を戻り値とします。そのため,getInfoメソッドの戻り値がcreateTimerメソッドなどの実行時のオブジェクトと異なる状態である場合があり,トラブルが生じやすくなっています。

これを防ぐために,createTimerメソッドで引数infoに指定するオブジェクトはStringやIntegerなどの不変オブジェクトにする,または引数infoに指定したオブジェクトの状態を変更しないことを推奨します。変更した場合には,getInfoメソッドの戻り値は変更後のオブジェクトになります。

(2) DDおよび属性ファイルでのタイムアウトメソッド指定

DDや属性ファイルで<method>タグにタイムアウトメソッドを指定する場合は,次のどちらかとしてください。

(3) Timer Serviceオブジェクトをサポートしていない種別のBeanからTimer Serviceオブジェクトを取得しようとした場合の動作

Timer Serviceをサポートしない取得手段を次の表に示します。Timer Serviceをサポートしない種別のBeanやサーブレットからTimerServiceオブジェクトを取得しようとした場合,手段によって次のような動作をします。

表2‒35 Timer Serviceオブジェクトをサポートしていない種別のBeanからTimer Serviceオブジェクトを取得しようとした場合の動作

TimerServiceオブジェクトの取得手段

動作

EJBContext#getTimerService

IllegalStateExceptionをスローします。

JNDIのルックアップ

NamingExceptionをスローします。

DI

デプロイに失敗します。

Timer Serviceをサポートしている種別のBeanは,タイムアウトメソッドを実装しているかどうかに関係なく,TimerServiceオブジェクトを取得できます。

(4) TimerServiceが提供するAPIの動作仕様

TimerServiceが提供するAPIを呼び出したときの動作のうち,EJB仕様書で明確に示されていない動作仕様があります。ここでは,javax.ejb.TimerServiceおよびjavax.ejb.Timerのアプリケーションサーバでの動作仕様を示します。

(5) タイムアウトメソッド実装時の注意事項