BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

Web アプリケーションのアセンブルとコンフィグレーション

 Previous Next Contents Index PDF で侮ヲ  

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

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

 


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

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

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

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

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

 


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

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

イベントのタイプ

インタフェース

メソッド

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

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.
HttpSessionAttributeListener

attributeAdded()

属性が削除された。

javax.servlet.http.
HttpSessionAttributeListener

attributeRemoved()

属性が置き換えられた。

javax.servlet.http.
HttpSessionAttributeListener

attributeReplaced()


 

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

 


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

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

  1. イベント リスナを作成する Web アプリケーションの web.xml デプロイメント記述子をテキスト エディタで開くか、Administration Console に統合されている Web アプリケーション デプロイメント記述子エディタを使います (「Web アプリケーション デプロイメント記述子エディタ (war)」を参照)。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
HttpSessionAttributeListener {

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

 


その他の情報源

 

Back to Top Previous Next