ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Java EE運用ガイド

4.1.9 ライフサイクルモジュールの作成方法

ここでは、ライフサイクルモジュールのアプリケーション作成方法として、以下を説明します。

ライフサイクルモジュールの作成

ライフサイクルモジュールは、com.sun.appserv.server.LifecycleListenerインタフェースの下記メソッドを実装して作成します。

public void handlerEvent(com.sun.appserv.server.LifecycleEvent event)
throws ServerLifecycleException

handleEventメソッドに各種ライフサイクルイベント通知時の処理を実装します。処理に失敗した場合は、com.sun.appserv.server.ServerLifecycleExceptionをスローしてください。 (注)
注) com.sun.appserv.server.ServerLifecycleExceptionがスローされた場合、IJServerクラスタはサーバーログにスタックトレースを出力し、起動処理または停止処理を続行します。

通知されたライフサイクルイベントを取得するためには、com.sun.appserv.server.LifecycleEventの下記メソッドを使用します。

LifecycleEventクラスには、各イベントを表す以下の固定値(int)を定義しています。

LifecycleListenerインタフェースの実装サンプル

import com.sun.appserv.server.LifecycleEvent;
import com.sun.appserv.server.LifecycleListener;
import com.sun.appserv.server.ServerLifecycleException;

public class LifecycleSimpleImpl implements LifecycleListener {
    public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
        if (LifecycleEvent.INIT_EVENT == event.getEventType()) {
            System.out.println("INIT_EVENT");
            return;
        }

        if (LifecycleEvent.STARTUP_EVENT == event.getEventType()) {
            System.out.println("STARTUP_EVENT");
            return;
        }

        if (LifecycleEvent.READY_EVENT == event.getEventType()) {
            System.out.println("READY_EVENT");
            return;
        }

        if (LifecycleEvent.SHUTDOWN_EVENT== event.getEventType()) {
            System.out.println("SHUTDOWN_EVENT");
            return;
        }

        if (LifecycleEvent.TERMINATION_EVENT == event.getEventType()) {
            System.out.println("TERMINATION_EVENT");
            return;
        }
    }
}

プロパティの取得方法

ライフサイクルモジュールの設定で追加したプロパティは、com.sun.appserv.server.LifecycleEventクラスの下記メソッドより取得します。

プロパティ(プロパティ名をarg1で登録)を取得し、標準出力を行うライフサイクルリスナ実装サンプル

import com.sun.appserv.server.LifecycleEvent;
import com.sun.appserv.server.LifecycleListener;
import com.sun.appserv.server.ServerLifecycleException;
import java.util.*;

public class LifecycleListenerImpl implements LifecycleListener {
    Properties prop = null;

    public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
        if (LifecycleEvent.INIT_EVENT == event.getEventType()) {
            prop = (Properties)event.getData();
            System.out.println("arg1="+prop.getProperty("arg1"));
            return;
        }
    }
}

javax.naming.InitialContextの取得方法

InitialContextのインスタンスは、com.sun.appserv.server.LifecycleEventContextの下記メソッドより取得します。

LifecycleEventContextインスタンスは、com.sun.appserv.server.LifecycleEventクラスの下記メソッドより取得します。

1) InitialContextを取得し、javax.sql.DataSourceをlookupするライフサイクルリスナ実装サンプル

import com.sun.appserv.server.LifecycleEvent;
import com.sun.appserv.server.LifecycleListener;
import com.sun.appserv.server.ServerLifecycleException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class LifecycleListenerImpl implements LifecycleListener {
    public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
        if (LifecycleEvent.READY_EVENT == event.getEventType()) {
            InitialContext ic = event.getLifecycleEventContext().getInitialContext();
            try {
                DataSource ds =  (DataSource) ic.lookup("jdbc/db");
            } catch (NamingException ne) {}
            return;
        }
    }
}

2) InitialContextを取得し、EJBビジネスインタフェース(examples.session.stateless.Hello)をlookupするライフサイクルリスナ実装サンプル

import com.sun.appserv.server.LifecycleEvent;
import com.sun.appserv.server.LifecycleListener;
import com.sun.appserv.server.ServerLifecycleException;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class LifecycleListenerImpl implements LifecycleListener {
    public void handleEvent(LifecycleEvent event) throws ServerLifecycleException {
        if (LifecycleEvent.READY_EVENT == event.getEventType()) {
            InitialContext ic = event.getLifecycleEventContext().getInitialContext();
            try {
                Object ds =  (Object) ic.lookup("examples.session.stateless.Hello");
            } catch (NamingException ne) {}
            return;
        }
    }
}

実装上の注意

アプリケーションインタフェース詳細

インタフェースは、すべて下記ファイルに格納されています。

C:\Interstage\F3FMisjee\lib\appserv-rt.jar

/opt/FJSVisjee/lib/appserv-rt.jar

各インタフェースの詳細は、Sun公開のJavaDocを参照してください