![]() ![]() ![]() ![]() |
以下の節では、アプリケーション イベントとイベント リスナ クラスについて説明します。
アプリケーション イベントとは、サーブレット コンテキストのステートの変更 (各 Web アプリケーションは独自のサーブレット コンテキストを使用する)、または HTTP セッション オブジェクトのステートの変更を通知するものです。これらのステートの変更に応答するイベント リスナ クラスを作成して、Web アプリケーションでそれらをコンフィグレーションおよびデプロイします。サーブレット コンテナはイベント リスナ クラスに何らかの処理を実行させるイベントを生成します。つまり、サーブレット コンテナはイベント リスナ クラスのメソッドを呼び出します。
サーブレット コンテキスト イベントの場合、イベント リスナ クラスは、Web アプリケーションがデプロイされるときやアンデプロイされるとき (または WebLogic Server が停止するとき)、および、属性が追加、削除、置換されるときに、通知を受け取ることができます。
HTTP セッション イベントの場合、イベント リスナ クラスは、HTTP セッションがアクティブ化されるかパッシベーションされようとしているとき、および、HTTP セッション属性が追加、削除、置換されるときに、通知を受け取ることができます。
Web アプリケーション イベント リスナ クラスは次の目的で使用します。
次の表は、サーブレット コンテキスト イベントのタイプ、イベント リスナ クラスが個々のサーブレット コンテキスト イベントに応答するために実装すべきインタフェース、およびサーブレット コンテキスト イベントが発生したときに起動されるメソッドを示しています。
次の表は、イベント リスナ クラスが HTTP セッション イベントに応答するために実装すべき HTTP セッション イベントのタイプ、および HTTP セッション イベントが発生したときに起動されるメソッドを示しています。
注意 : | Servlet 2.5 仕様にも javax.servlet.http.HttpSessionBindingListener インタフェースと javax.servlet.http.HttpSessionActivationListener インタフェースが含まれています。これらのインタフェースは、セッション属性として格納されるオブジェクトによって実装され、web.xml へのイベント リスナの登録を必要としません。詳細については、これらのインタフェースの Javadoc を参照してください。 |
次の表は、サーブレット要求イベントのタイプ、イベント リスナ クラスがサーブレット要求のライフサイクルに渡って状態を管理するために実装する必要があるインタフェース、および要求イベントの発生時に呼び出されるメソッドについて示しています。
イベント リスナ クラスをコンフィグレーションするには、次の手順に従います。
web.xml
デプロイメント記述子をテキスト エディタで開きます。web.xml
ファイルは、Web アプリケーションの WEB-INF
ディレクトリにあります。 web.xml
デプロイメント記述子の listener
要素を使用してイベント宣言を追加します。イベント宣言は、イベントが発生するときに起動されるイベント リスナ クラスを定義します。listener
要素は、filter
要素と filter-mapping
要素のすぐ後ろで、servlet
要素のすぐ前に指定します。それぞれのイベント タイプに複数のイベント リスナ クラスを指定できます。WebLogic Server は、デプロイメント記述子に記述されている順にイベント リスナ クラスを起動します (停止イベントだけは、逆順で起動されます)。次に例を示します。<listener>
<listener-class>myApp.MyContextListenerClass</listener-class>
</listener>
<listener>
<listener-class>myApp.MySessionAttributeListenerClass</listener-class>
</listener>
イベント リスナ クラスを作成するには、次の手順に従います。
public MyListener() { /* ... */ }
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.http.*;
public final class MyContextListenerClass implements
ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
/* このメソッドは、サーブレット コンテキストが初期化される前
(Web アプリケーションがデプロイされるとき) に呼び出される。
この時点で、サーブレット コンテキストに関連するデータを初期化できる
*/
}
public void contextDestroyed(ServletContextEvent event) {
/* このメソッドは、サーブレット コンテキスト (Web アプリケーション) が
アンデプロイされるとき、または WebLogic Server が
停止するときに呼び出される
*/
}
}
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) {
/* このメソッドは、属性がセッションで置き換えられるときに
呼び出される
*/
}
}
![]() ![]() ![]() |