Hitachi

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


2.12.3 EJBタイマの自動生成

EJBタイマを自動で生成する方法について説明します。EJBタイマの自動生成には次の方法があります。

@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タイマが自動生成されます。

図2‒23 EJBタイマの自動生成の流れ(サーブレット方式)

[図データ]

  1. J2EEサーバを再起動する。

  2. J2EEアプリケーションが自動で開始する。

    J2EEサーバ停止時に開始状態だったJ2EEアプリケーションが自動で開始されます(アプリケーションの自動起動を有効にしておく必要があります)。

  3. initメッドが実行される。

    J2EEアプリケーションが開始するとサーブレットがロードされ,initメッドが実行されます。initメソッドでは,Enterprise Beanを生成してビジネスメソッドを呼び出します。

  4. EJBタイマが生成される。

    Enterprise Beanのビジネスメソッドで,Timer ServiceオブジェクトからEJBタイマが生成されます。

(b) EJBタイマを自動生成するための設定

サーブレットでEJBタイマを自動生成するには,次の設定をします。

  1. Enterprise BeanにEJBタイマを生成するビジネスメソッドを作成する。

  2. サーブレットを作成する。

    initメソッドで,手順1.で作成したビジネスメソッドを呼び出すようにします。

  3. J2EEアプリケーションの開始時に,手順2.で作成したサーブレットをロードさせる。

    DD(web.xml)で,手順2.で用意したサーブレットの<load-on-startup>タグの値を0以上に設定します。

  4. J2EEサーバ起動時に,アプリケーションの自動起動を有効にする。

(3) J2EEサーバ起動時のEJBタイマの自動生成(Managementイベント方式)

EJBタイマの自動生成処理をManagementイベントとして設定する場合の,EJBタイマ自動生成の流れと設定について説明します。

(a) EJBタイマの自動生成の流れ

Managementイベント方式では,次のような流れでEJBタイマが自動生成されます。

図2‒24 EJBタイマの自動生成の流れ(Managementイベント方式)

[図データ]

  1. J2EEサーバを再起動する。

  2. メッセージが出力される。

    J2EEサーバの起動が完了するとメッセージKDJE30028-Iが出力されます。このメッセージが出力されることで,Managementイベントが発生します。

  3. Managementアクションが実行される。

    Managementイベントを受けて,Managementアクションが実行されます。Managementアクションでは,バッチファイルが実行されます。

  4. バッチファイルが実行される。

    バッチファイルで,EJBクライアントアプリケーションが実行されます。

  5. EJBクライアントアプリケーションでビジネスメソッドが呼ばれる。

    EJBクライアントアプリケーションで,Enterprise Beanを生成してビジネスメソッドを呼び出します。

  6. EJBタイマが生成される。

    Enterprise Beanのビジネスメソッドで,Timer ServiceオブジェクトからEJBタイマが生成されます。

(b) EJBタイマを自動生成するための設定

Managementイベントを使用してEJBタイマを自動生成するには,次の設定をします。

  1. Enterprise BeanにEJBタイマを生成するビジネスメソッドを作成する。

  2. EJBクライアントアプリケーションを作成する。

    手順1.で作成したビジネスメソッドを呼び出すようにします。

  3. 手順2.で作成したEJBクライアントアプリケーションを実行する環境,およびバッチファイルを作成します。

  4. Managementイベントの自動実行を設定する。

    Managementイベントを有効にします。J2EEサーバ開始完了時に出力されるKDJE30028-IをManagementイベントに設定し,このManagementイベントに対するManagementアクションとして,手順3.で準備したバッチファイルを設定します。

    Managementイベントの詳細については,マニュアル「アプリケーションサーバ 機能解説 運用/監視/連携編」の「9. Managementイベントの通知とManagementアクションによる処理の自動実行」を参照してください。