2.12.3 EJBタイマの自動生成
EJBタイマを自動で生成する方法について説明します。EJBタイマの自動生成には次の方法があります。
-
@Scheduleアノテーションを指定する方式
EJBタイマを生成するEnterprise Beanに@Scheduleアノテーションを指定する方法です。EJB 3.1以降で使用できます。
-
サーブレット方式
サーブレット内で,EJBタイマの自動生成処理を実装する方法です。
-
Managementイベント方式
Managementイベントを使用してEJBタイマを自動生成する方法です。J2EEサーバの起動時に出力されるメッセージを契機に発生するManagementイベントとして,EJBタイマの自動生成を設定します。
EJBタイマを生成するEnterprise Beanを呼び出すEJBクライアントプログラムを作成している場合は,J2EEアプリケーションの修正は不要です。
@Scheduleアノテーションを指定する方式およびサーブレット方式では,アプリケーション開始時にEJBタイマを自動生成できます。アプリケーションの自動起動を有効にしておくことによって,J2EEサーバ起動時に自動生成することもできます。Managementイベント方式では,J2EEサーバ起動時にEJBタイマを自動生成できます。
- 〈この項の構成〉
(1) J2EEサーバ起動時のEJBタイマの自動生成(@Scheduleアノテーションを指定する方式)
EJB 3.1のStateless Session BeanおよびSingleton Session Beanの場合に使用できる方式です。アプリケーション開始時に,EJBコンテナがSession Beanのクラスに指定された@Scheduleアノテーションの定義に基づいて,自動的にタイマを生成します。
タイマは,タイマによる処理を実行するBeanクラスまたはその親クラスのメソッドに,@Scheduleアノテーションを指定することで生成できます。複数のタイマを起動する場合は@Schedulesアノテーションを指定します。
(2) J2EEサーバ起動時のEJBタイマの自動生成(サーブレット方式)
EJBタイマの自動生成処理をサーブレットで実装する場合の,EJBタイマ自動生成の流れと設定について説明します。
(a) EJBタイマの自動生成の流れ
サーブレット方式では,次のような流れでEJBタイマが自動生成されます。
-
J2EEサーバを再起動する。
-
J2EEアプリケーションが自動で開始する。
J2EEサーバ停止時に開始状態だったJ2EEアプリケーションが自動で開始されます(アプリケーションの自動起動を有効にしておく必要があります)。
-
initメッドが実行される。
J2EEアプリケーションが開始するとサーブレットがロードされ,initメッドが実行されます。initメソッドでは,Enterprise Beanを生成してビジネスメソッドを呼び出します。
-
EJBタイマが生成される。
Enterprise Beanのビジネスメソッドで,Timer ServiceオブジェクトからEJBタイマが生成されます。
(b) EJBタイマを自動生成するための設定
サーブレットでEJBタイマを自動生成するには,次の設定をします。
-
Enterprise BeanにEJBタイマを生成するビジネスメソッドを作成する。
-
サーブレットを作成する。
initメソッドで,手順1.で作成したビジネスメソッドを呼び出すようにします。
-
J2EEアプリケーションの開始時に,手順2.で作成したサーブレットをロードさせる。
DD(web.xml)で,手順2.で用意したサーブレットの<load-on-startup>タグの値を0以上に設定します。
-
J2EEサーバ起動時に,アプリケーションの自動起動を有効にする。
(3) J2EEサーバ起動時のEJBタイマの自動生成(Managementイベント方式)
EJBタイマの自動生成処理をManagementイベントとして設定する場合の,EJBタイマ自動生成の流れと設定について説明します。
(a) EJBタイマの自動生成の流れ
Managementイベント方式では,次のような流れでEJBタイマが自動生成されます。
-
J2EEサーバを再起動する。
-
メッセージが出力される。
J2EEサーバの起動が完了するとメッセージKDJE30028-Iが出力されます。このメッセージが出力されることで,Managementイベントが発生します。
-
Managementアクションが実行される。
Managementイベントを受けて,Managementアクションが実行されます。Managementアクションでは,バッチファイルが実行されます。
-
バッチファイルが実行される。
バッチファイルで,EJBクライアントアプリケーションが実行されます。
-
EJBクライアントアプリケーションでビジネスメソッドが呼ばれる。
EJBクライアントアプリケーションで,Enterprise Beanを生成してビジネスメソッドを呼び出します。
-
EJBタイマが生成される。
Enterprise Beanのビジネスメソッドで,Timer ServiceオブジェクトからEJBタイマが生成されます。
(b) EJBタイマを自動生成するための設定
Managementイベントを使用してEJBタイマを自動生成するには,次の設定をします。
-
Enterprise BeanにEJBタイマを生成するビジネスメソッドを作成する。
-
EJBクライアントアプリケーションを作成する。
手順1.で作成したビジネスメソッドを呼び出すようにします。
-
手順2.で作成したEJBクライアントアプリケーションを実行する環境,およびバッチファイルを作成します。
-
Managementイベントの自動実行を設定する。
Managementイベントを有効にします。J2EEサーバ開始完了時に出力されるKDJE30028-IをManagementイベントに設定し,このManagementイベントに対するManagementアクションとして,手順3.で準備したバッチファイルを設定します。
Managementイベントの詳細については,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「9. Managementイベントの通知とManagementアクションによる処理の自動実行」を参照してください。