ここでは,TimerManagerを使用したアプリケーションの開発について説明します。
TimerManagerを使用する場合の,アプリケーションを構成するコンポーネントの使用可否を次の表に示します。
表10-12 TimerManagerを使用する場合のアプリケーションを構成するコンポーネントの使用可否
コンポーネント | 使用可否 | |||
---|---|---|---|---|
EJBクライアント | × | |||
リソースアダプタ | × | |||
JavaBeansリソース | × | |||
サーブレット/JSP※ | ○ | |||
EJB | Stateless Session Bean | EJB2.1以前 | CMT | ○ |
BMT | ○ | |||
EJB3.0 | × | |||
Stateful Session Bean | × | |||
Entity Bean | × | |||
Message-driven Bean | × |
注※ サーブレットリスナやフィルタでも使用できます。
TimerManagerを使用するアプリケーションの開発の流れは次のとおりです。
それぞれの作業の詳細を次に示します。
TimerManagerを使用するEJBまたはサーブレットの属性をDDに定義します。TimerManagerを使用するための定義は,アノテーションでは実施できません。
TimerManagerを使用するために定義する必要がある属性を次の表に示します。
表10-13 TimerManagerを使用するために定義する必要がある属性
タグ名 | 説明 | |
---|---|---|
<ルートタグ> | - | |
┣ ┃ ┃ | <description> | 任意で設定してください。 |
┣ ┃ ┃ ┃ | <res-ref-name> | JNDI ENC名(JNDIルックアップに使用する名前)を指定してください。 |
┣ ┃ ┃ ┃ | <res-type> | 次の内容を設定してください。 「commonj.timers.TimerManager」 |
┣ ┃ ┃ | <res-auth> | 設定した値は無視されます。 |
┣ ┃ ┃ ┃ ┃ | <res-sharing-scope> | 「Unshareable」を設定してください。ただし,「Shareable」を設定しても,「Unshareable」設定時と同様に動作します(ルックアップされるたびに新しいTimerManagerが作成されます)。 |
┣ ┃ ┃ | <mapped-name> | 設定した値は無視されます。 |
┣ ┃ ┃ | <injection-target> | 設定した値は無視されます。 |
┗ | <linked-to> | 設定した値は無視されます。 |
サーブレットでTimerManagerを使用する場合のweb.xmlの定義例を次に示します。
<web-app> |
TimerManagerは,アプリケーション中でJNDIによるルックアップが実行されるたびに作成されます。作成されたTimerManagerは,stopメソッドの実行時,またはアプリケーション終了時に破棄されます。なお,TimerManagerは必要に応じて複数定義することもできます。
TimerManagerを使用するには,実行する処理を実装したリスナを作成する必要があります。リスナのインタフェースには,必ず実装するものと,必要に応じて実装するものがあります。必ず実装するインタフェースと必要に応じて実装するインタフェースを次に示します。
APIの詳細については,Timer and Work Manager for Application ServersのAPIの仕様を参照してください。
TimerListener,StopTimerListenerおよびCancelTimerListenerを実装したクラスの例を次に示します。
public class MyTimerListener |
TimerManagerを使用するには,スケジュール元となるEJBまたはサーブレットに,属性に定義したTimerManagerのJNDI名のルックアップ,およびTimerManagerの処理のスケジューリングを実装します。
InitialContext ic = new InitialContext(); |
InitialContext ctx = new InitialContext(); |
TimerManagerを使用するJ2EEアプリケーションをコンパイルする場合は,次のJARファイルを含めてください。
<Application Serverのインストールディレクトリ>¥CC¥lib¥ejbserver.jar