![]() |
![]() |
|
|
| |
アプリケーション イベントとリスナ
この章では、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 の仕様と規定に完全に準拠します。
サーブレット コンテキスト イベント
次の表は、サーブレット コンテキスト イベントのタイプ、イベント リスナ クラスがイベントに応答するために実装すべきインタフェース、およびイベントが発生したときに起動されるメソッドを示しています。
HTTP セッション イベント
次の表は、HTTP セッション イベントのタイプ、イベント リスナ クラスがイベントへの応答に実装すべきインタフェース、およびイベントが発生したときに起動されるメソッドを示しています。
注意: サーブレット 2.3 仕様にも javax.servlet.http.HttpSessionBindingListener
インタフェースと javax.servlet.http.HttpSessionActivationListener
インタフェースが含まれています。これらのインタフェースは、セッション属性として格納されるオブジェクトによって実装され、web.xml
へのイベント リスナの登録を必要としません。詳細については、これらのインタフェースの Javadoc を参照してください。
イベント リスナのコンフィグレーション
イベント リスナをコンフィグレーションするには、次の手順に従います。
web.xml
デプロイメント記述子をテキスト エディタで開くか、Administration Console に統合されている Web アプリケーション デプロイメント記述子エディタを使います(詳細については、「Web アプリケーション デプロイメント記述子エディタ ヘルプ」を参照してください)。web.xml
ファイルは、Web アプリケーションの WEB-INF
ディレクトリにあります。
<listener>
要素を使ってイベント宣言を追加します。イベント宣言は、イベントが発生するときに起動されるリスナ クラスを定義します。<listener>
要素は、<filter>
要素と <filter-mapping>
要素のすぐ後ろで、<servlet>
要素のすぐ前に指定します。それぞれのイベント タイプに複数のリスナ クラスを指定できます。WebLogic Server は、デプロイメント記述子に記述されている順にイベント リスナを起動します(停止イベントだけは、逆順で起動されます)。次に例を示します。
<listener>
<listener-class>myApp.myContextListenerClass</listener-class>
</listener>
<listener>
<listener-class>myApp.mySessionAttributeListenerClass</listener-class>
</listener>
リスナ クラスの作成
リスナ クラスを作成するには、次の手順に従います。
WEB-INF
\classes
ディレクトリにコピーするか、または、それらを jar
ファイルにパッケージ化してからその jar
ファイルを Web アプリケーションの WEB-INF
\lib
ディレクトリにコピーします。
次の便利なクラスは、リスナ クラスのリスナ メソッドに渡されます。
javax.servlet.http.HttpSessionEvent
javax.servlet.ServletContextEvent
javax.servlet.ServletContextAttributeEvent
javax.servlet.http.HttpSessionBindingEvent
リスナ クラスのテンプレート
次の例は、リスナ クラスの基本的なテンプレートです。
サーブレット コンテキスト リスナの例
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) {
/* このメソッドは、属性がセッションで置き換えられたときに
呼び出される
*/
}
}
その他の情報源
![]() |
![]() |
![]() |