ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

F.7.6 コンテナの起動時にアプリケーションを動作させたい

アプリケーションを最初に動作させる時に、環境設定ファイルの読み込みやクラスのロードなどのために時間がかかることがあります。
コンテナの起動時にアプリケーションを一度動作させることで、このような初期化時間の影響を少なくすることができます。

Webアプリケーションの場合

Webアプリケーションでは、サーブレットのスタートアップを利用して、コンテナの起動時にアプリケーションを動作させます。
以下の手順で作成します。

  1. UjiServletを継承して、スタートアップ用のサーブレットクラスを作成します。
    initメソッドからUjiServletのinitApplicationメソッドを呼び出します。

    • サーブレットの記述例

      public class MyServlet extends UjiServlet {
         public MyServlet() {
         }
         public void init() {
           try {
             ApplicationProfile ap = initApplication();
           } catch(Exception e) {
             e.printStackTrace();
           }
         }
       }
  2. 固有のアプリケーション初期化処理を記述する場合は、アプリケーションクラスを利用して記述します。

  3. スタートアップ用のサーブレットをWebアプリケーション環境定義ファイル(web.xml)で指定します。
    load-on-startupを指定することで、コンテナの起動時に呼び出されます。

    • web.xmlの記述例

        <servlet>
          <servlet-name>MyServlet</servlet-name>
          <servlet-class>somePackage.MyServlet</servlet-class>
          <load-on-startup/>
        </servlet>

EJBアプリケーションの場合

Interstage Application Serverのワークユニット機能を利用して、ワークユニット起動時にApcoordinatorで作成したセションBeanを実行することができます。

  1. Interstage管理コンソールでワークユニットを選択し、[実行クラス][新規作成]で、以下の情報を作成します。

    項目

    指定方法

    名前

    Initializerなど、適宜設定します。

    クラス名

    com.fujitsu.uji.ejb.workunit.Initializerを指定します。

    実行順

    任意に指定します。

    引数

    セションBeanのJNDI名をjava:comp/env/ejb/SomeEJBのような形式で指定します。

    例外発生時のワークユニット起動

    任意に指定します。

    ワークユニット多重時の呼び出し

    [すべてのVMで呼び出し]を選択します。

    クラスを実行するコンテナ

    [EJBコンテナ]を選択します。

  2. 固有のアプリケーション初期化処理を記述する場合は、以下のようにビジネスクラスを作成します。
    作成したビジネスクラスは、Beanなし、コマンドはuji.initializeとしてコマンドマップに登録します。

    • ビジネスクラスの記述例

      package somepackage;
      
      import com.fujitsu.uji.GenericHandler;
      
      public class SomeHandler extends GenericHandler
      {
          public void startEjb(DispatchContext context) {
            ...
          }
          ...
      }
    • コマンドマップの記述例

      ;uji.initialize=somepackage.SomeHandler.startEjb

関連項目