ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     Web アプリケーション   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

アプリケーション イベントとリスナ

 

この章では、Web アプリケーションのイベントとリスナをコンフィグレーションおよび使用する方法について説明します。

 


アプリケーション イベントとリスナの概要

アプリケーション イベントとは、サーブレット コンテキストのステートの変更(各 Web アプリケーションは独自のサーブレット コンテキストを使用する)、または HTTP セッション オブジェクトのステートの変更を通知するものです。これらのステートの変更に応答するイベント リスナ クラスを作成して、Web アプリケーションでアプリケーション イベントとリスナ クラスをコンフィグレーションおよびデプロイします。

サーブレット コンテキスト イベントの場合、イベント リスナ クラスは、Web アプリケーションがデプロイされるときやアンデプロイされているとき(または WebLogic Server が停止するとき)、および、属性が追加、削除、置換されたときに、通知を受け取ることができます。

HTTP セッション イベントの場合、イベント リスナ クラスは、HTTP セッションがアクティブ化されたかパッシベーションされようとしているとき、および、HTTP セッション属性が追加、削除、置換されたときに、通知を受け取ることができます。

Web アプリケーション イベントは次の目的で使用します。

注意: アプリケーション イベントは、Sun Microsystems が提供する Java サーブレット仕様バージョン 2.3 の新しい機能です。バージョン 2.3 は、サーブレット仕様で提案されている最新のドラフトです。アプリケーションでアプリケーション イベントを使用する計画がある場合、この仕様がまた確定しておらず、将来、変更される可能性があることに注意してください。

サーブレット 2.3 仕様は、J2EE 1.3 仕様の一部です。J2EE 1.3 機能の使用については、 WebLogic Server 6.1 と J2EE 1.2 および J2EE 1.3を参照してください。

WebLogic Server 6.1 と J2EE 1.2 および J2EE 1.3

BEA WebLogic Server 6.1 は、高度な J2EE 1.3 の機能を実装する最初の e-コマース トランザクション プラットフォームです。J2EE のルールに準拠するために、BEA Systems では 2 つの別個のダウンロードを用意しています。1 つは J2EE 1.3 の機能が有効になっているもの、1 つは J2EE 1.2 の機能に制限されているものです。いずれのダウンロードもコンテナは同じですが、利用可能な API だけ異なります。

J2EE 1.2 の機能に加えて J2EE 1.3 の機能を備える WebLogic Server 6.1

このダウンロードでは、WebLogic Server はデフォルトで J2EE 1.3 の機能を使用して動作します。それらの機能には、EJB 2.0、JSP 1.2、サーブレット 2.3、および J2EE コネクタ アーキテクチャ 1.0 が含まれます。J2EE 1.3 の機能を有効にして WebLogic Server 6.1 を実行しても、J2EE 1.2 アプリケーションはそのままフルサポートされます。J2EE 1.3 機能の実装では、適切な API 仕様の最終ではないバージョンが使用されます。したがって、J2EE 1.3 の新機能を使用する BEA WebLogic Server 6.1 用に開発されたアプリケーション コードは、BEA WebLogic Server の今後のリリースでサポートされる J2EE 1.3 プラットフォームとは互換性を持たない場合があります。

J2EE 1.2 認定の WebLogic Server 6.1

このダウンロードでは、WebLogic Server はデフォルトで J2EE 1.3 機能が無効な状態で動作し、J2EE 1.2 の仕様と規定に完全に準拠します。

 


サーブレット コンテキスト イベント

次の表は、サーブレット コンテキスト イベントのタイプ、イベント リスナ クラスがイベントに応答するために実装すべきインタフェース、およびイベントが発生したときに起動されるメソッドを示しています。

イベントのタイプ

インタフェース

メソッド

サーブレット コンテキストが作成された。

javax.servlet.ServletContextListener

contextInitialized()

サーブレット コンテキストが停止されようとしている。

javax.servlet.ServletContextListener

contextDestroyed()

属性が追加された。

javax.servlet.
ServletContextAttributesListener

attributeAdded()

属性が削除された。

javax.servlet.
ServletContextAttributesListener

attributeRemoved()

属性が置き換えられた。

javax.servlet.
ServletContextAttributesListener

attributeReplaced()


 

 


HTTP セッション イベント

次の表は、HTTP セッション イベントのタイプ、イベント リスナ クラスがイベントへの応答に実装すべきインタフェース、およびイベントが発生したときに起動されるメソッドを示しています。

イベントのタイプ

インタフェース

メソッド

HTTP セッションがアクティブ化された。

javax.servlet.http.
HttpSessionListener

sessionCreated()

HTTP セッションがパッシベーションされようとしている。

javax.servlet.http.
HttpSessionListener

sessionDestroyed()

属性が追加された。

javax.servlet.http.
HttpSessionAttributesListener

attributeAdded()

属性が削除された。

javax.servlet.http.
HttpSessionAttributesListener

attributeRemoved()

属性が置き換えられた。

javax.servlet.http.
HttpSessionAttributesListener

attributeReplaced()


 

注意: サーブレット 2.3 仕様にも javax.servlet.http.HttpSessionBindingListener インタフェースと javax.servlet.http.HttpSessionActivationListener インタフェースが含まれています。これらのインタフェースは、セッション属性として格納されるオブジェクトによって実装され、web.xml へのイベント リスナの登録を必要としません。詳細については、これらのインタフェースの Javadoc を参照してください。

 


イベント リスナのコンフィグレーション

イベント リスナをコンフィグレーションするには、次の手順に従います。

  1. イベント リスナを作成する Web アプリケーションの web.xml デプロイメント記述子をテキスト エディタで開くか、Administration Console に統合されている Web アプリケーション デプロイメント記述子エディタを使います(詳細については、「Web アプリケーション デプロイメント記述子エディタ ヘルプ」を参照してください)。web.xml ファイルは、Web アプリケーションの WEB-INF ディレクトリにあります。

  2. <listener> 要素を使ってイベント宣言を追加します。イベント宣言は、イベントが発生するときに起動されるリスナ クラスを定義します。<listener> 要素は、<filter> 要素と <filter-mapping> 要素のすぐ後ろで、<servlet> 要素のすぐ前に指定します。それぞれのイベント タイプに複数のリスナ クラスを指定できます。WebLogic Server は、デプロイメント記述子に記述されている順にイベント リスナを起動します(停止イベントだけは、逆順で起動されます)。次に例を示します。

    <listener>
    <listener-class>myApp.myContextListenerClass</listener-class>
    </listener>

    <listener>
    <listener-class>myApp.mySessionAttributeListenerClass</listener-class>
    </listener>

  3. リスナ クラスを作成し、デプロイします。詳細については、次の「 リスナ クラスの作成」を参照してください。

 


リスナ クラスの作成

リスナ クラスを作成するには、次の手順に従います。

  1. クラスが応答するイベントのタイプに対して適切なインタフェースを実装する新しいクラスを作成します。これらのインタフェースのリストについては、 サーブレット コンテキスト イベントまたは HTTP セッション イベントを参照してください。作業の開始に利用できるサンプルのテンプレートについては、 リスナ クラスのテンプレートを参照してください。

  2. 引数をとらないパブリック コンストラクタを作成します。

  3. インタフェースの必須メソッドを実装します。詳細については、J2EE API リファレンス(Javadoc)を参照してください。

  4. コンパイル済みのイベント リスナ クラスを Web アプリケーションの WEB-INF\classes ディレクトリにコピーするか、または、それらを jar ファイルにパッケージ化してからその jar ファイルを Web アプリケーションの WEB-INF\lib ディレクトリにコピーします。

次の便利なクラスは、リスナ クラスのリスナ メソッドに渡されます。

javax.servlet.http.HttpSessionEvent

HTTP セッション オブジェクトへのアクセスを提供します。

javax.servlet.ServletContextEvent

サーブレット コンテキスト オブジェクトへのアクセスを提供します。

javax.servlet.ServletContextAttributeEvent

サーブレット コンテキストとその属性へのアクセスを提供します。

javax.servlet.http.HttpSessionBindingEvent

HTTP セッションとその属性へのアクセスを提供します。

 


リスナ クラスのテンプレート

次の例は、リスナ クラスの基本的なテンプレートです。

サーブレット コンテキスト リスナの例

package myApp;
import javax.servlet.*;

public final class myContextListenerClass implements
   ServletContextListener {
    public void contextInitialized(ServletContextEvent event) {

      /* このメソッドは、サーブレット コンテキストが初期化されたとき
         (Web アプリケーションがデプロイされたとき)に呼び出される。
         この時点で、サーブレット コンテキストに関連するデータを初期化できる
      */

    }

    public void contextDestroyed(ServletContextEvent event) {

      /* このメソッドは、サーブレット コンテキスト(Web アプリケーション)が
         アンデプロイされたとき、または WebLogic Server が
         シャットダウンしたときに呼び出される
      */

    }
}

HTTP セッション属性リスナの例

package myApp;
import javax.servlet.*;

public final class mySessionAttributeListenerClass implements
HttpSessionAttributesListener {

public void attributeAdded(HttpSessionBindingEvent sbe) {
/* このメソッドは、属性がセッションに追加されたときに
呼び出される
*/
}

public void attributeRemoved(HttpSessionBindingEvent sbe) {
/* このメソッドは、属性がセッションから削除されたときに
呼び出される
*/
}

public void attributeReplaced(HttpSessionBindingEvent sbe) {
/* このメソッドは、属性がセッションで置き換えられたときに
呼び出される
*/
}
}

 


その他の情報源

 

back to top previous page next page