Oracle® Fusion Middleware Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発 12c (12.2.1.1.0) E77264-02 |
|
前 |
次 |
この章の内容は以下のとおりです。
アプリケーション・イベントとは、サーブレット・コンテキストの状態の変更(各Webアプリケーションは独自のサーブレット・コンテキストを使用します)、またはHTTPセッション・オブジェクトの状態の変更を通知するものです。これらの状態の変更に応答するイベント・リスナー・クラスを作成して、Webアプリケーションでそれらを構成およびデプロイします。サーブレット・コンテナはイベント・リスナー・クラスになんらかの処理を実行させるイベントを生成します。つまり、サーブレット・コンテナはイベント・リスナー・クラスのメソッドを呼び出します。
この処理の概要は次のとおりです。
ユーザーが、いずれかのリスナー・インタフェースを実装するイベント・リスナー・クラスを作成します。
この実装がデプロイメント記述子に登録されます。
デプロイメント時、サーブレット・コンテナはイベント・リスナー・クラスのインスタンスを作成します。(このために、パブリック・コンストラクタが存在している必要があります。「イベント・リスナー・クラスの作成」を参照してください。)
実行時、サーブレット・コンテナはリスナー・クラスのインスタンスを呼び出します。
サーブレット・コンテキスト・イベントの場合、イベント・リスナー・クラスは、Webアプリケーションがデプロイされるときやアンデプロイされるとき(またはWebLogic Serverが停止するとき)、および、属性が追加、削除、置換されるときに、通知を受け取ることができます。
HTTPセッション・イベントの場合、イベント・リスナー・クラスは、HTTPセッションがアクティブ化されるかパッシブ化されようとしているとき、および、HTTPセッション属性が追加、削除、置換されるときに、通知を受け取ることができます。
Webアプリケーション・イベント・リスナー・クラスは次の目的で使用します。
Webアプリケーションがデプロイされるときや停止されるときにデータベース接続を管理する
標準カウンタ・ユーティリティを作成する
HTTPセッションとその属性の状態をモニターします
次の表は、サーブレット・コンテキスト・イベントのタイプ、イベント・リスナー・クラスが個々のサーブレット・コンテキスト・イベントに応答するために実装すべきインタフェース、およびサーブレット・コンテキスト・イベントが発生したときに起動されるメソッドを示しています。
表11-1 サーブレット・コンテキスト・イベント
イベントのタイプ | インタフェース | メソッド |
---|---|---|
サーブレット・コンテキストが作成されます。 |
javax.servlet.ServletContextListener |
contextInitialized() |
サーブレット・コンテキストが停止されようとしています。 |
javax.servlet.ServletContextListener |
contextDestroyed() |
属性が追加されます。 |
javax.servlet. ServletContextAttributesListener |
attributeAdded() |
属性が削除されます。 |
javax.servlet. ServletContextAttributesListener |
attributeRemoved() |
属性が置き換えられます。 |
javax.servlet. ServletContextAttributesListener |
attributeReplaced() |
次の表は、イベント・リスナー・クラスがHTTPセッション・イベントに応答するために実装すべきHTTPセッション・イベントのタイプ、およびHTTPセッション・イベントが発生したときに起動されるメソッドを示しています。
表11-2 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() |
注意:
Servlet 3.1仕様にもjavax.servlet.http.HttpSessionBindingListener
インタフェースとjavax.servlet.http.HttpSessionActivationListener
インタフェースが含まれています。これらのインタフェースは、セッション属性として格納されるオブジェクトによって実装され、web.xml
へのイベント・リスナーの登録を必要としません。
次の表は、サーブレット・リクエスト・イベントのタイプ、イベント・リスナー・クラスがサーブレット・リクエストのライフサイクルにわたって状態を管理するために実装する必要があるインタフェース、およびリクエスト・イベントの発生時に呼び出されるメソッドを示しています。
表11-3 サーブレット・リクエスト・イベント
イベントのタイプ | インタフェース | メソッド |
---|---|---|
リクエストがWebアプリケーションのスコープ外に移ろうとしています。 |
javax.servlet.ServletRequestListener |
requestDestroyed() |
リクエストがWebアプリケーションのスコープ内に移ろうとしています。 |
javax.servlet.ServletRequestListener |
requestInitialized() |
サーブレット・リクエストに新しく属性が追加されたという通知。属性の追加後に呼び出されます。 |
javax.servlet.ServletRequestAttributeListener |
attributeAdded() |
サーブレット・リクエストから新しく属性が削除されたという通知。属性の削除後に呼び出されます。 |
javax.servlet.ServletRequestAttributeListener |
attributeRemoved() |
サーブレット・リクエストで属性が置き換えられたという通知。属性の置換後に呼び出されます。 |
javax.servlet.ServletRequestAttributeListener |
attributeReplaced() |
次の例は、イベント・リスナー・クラスの基本的なテンプレートです。
package myApp; import javax.servlet.http.*; public final class MyContextListenerClass implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { /* This method is called prior to the servlet context being initialized (when the Web application is deployed). You can initialize servlet context related data here. */ } public void contextDestroyed(ServletContextEvent event) { /* This method is invoked when the Servlet Context (the Web application) is undeployed or WebLogic Server shuts down. */ } }
package myApp; import javax.servlet.*; public final class MySessionAttributeListenerClass implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is added to a session. */ } public void attributeRemoved(HttpSessionBindingEvent sbe) { /* This method is called when an attribute is removed from a session. */ } public void attributeReplaced(HttpSessionBindingEvent sbe) { /* This method is invoked when an attibute is replaced in a session. */ } }
サーブレット3.1仕様(http://jcp.org/en/jsr/detail?id=340
)
Java EE 7 APIリファレンス(Javadoc)(http://docs.oracle.com/javaee/7/api/
)
Java EE 7チュートリアル(http://docs.oracle.com/javaee/7/tutorial/doc/
)