アプリケーション・ライフサイクルのリスナーとイベント

アプリケーション・ライフサイクルのリスナーとイベント (現在はサーブレット API の一部) を使用すると、 サーブレットのコンテキストやセッションに変更があった場合に、 関係のあるリスナーに通知できます。 例えば、属性に変更があった場合や、セッションまたはサーブレット・コンテキストが作成または破棄された場合に、 ユーザーに通知できます。

ライフサイクル・リスナーにより、アプリケーション開発者は、 ServletContext および HttpSession オブジェクトとの対話に対してより強力な制御が得られます。 サーブレット・コンテキスト・リスナーは、リソースをアプリケーション・レベルで管理します。 セッション・リスナーは、1 つのクライアントからの一連のリクエストに関連付けられたリソースを管理します。 リスナーは、ライフサイクル・イベントおよび属性変更イベントで利用可能です。 リスナー開発者は、必要なリスナー機能に応じて、 javax リスナー・インターフェースを実装するクラスを作成します。

アプリケーションの起動時に、コンテナーは、イントロスペクションを使用して、 リスナー・クラスのインスタンスを作成し、それを該当のイベント・ジェネレーターに登録します。

サーブレット・コンテキストが作成されるとき、このコンテキストがアプリケーションに適している場合は、 リスナー・クラスの contextInitialized メソッドが呼び出され、 このメソッドにより、使用するアプリケーションのサーブレットのためにデータベース接続が作成されます。 すべてのサーブレット・コンテキスト・リスナーは、Web アプリケーションのすべてのサーブレットが初期化される前に、コンテキストの初期化について通知されます。

サーブレット・コンテキストが破棄されるとき、 このコンテキストがアプリケーションに適している場合は、 contextDestroyed メソッドが呼び出され、このメソッドがデータベース接続を解放します。 すべてのサーブレットは、 サーブレット・コンテキスト・リスナーがコンテキスト消滅を通知される前に破棄される必要があります。

セッション・リスナーへの通知は、コンテキスト・リスナーへの通知より前に行われます。

サーブレット・コンテキストおよびセッション変更用のリスナー・クラス

以下のメソッドは、 javax.servlet.ServletContextListener インターフェースの一部として定義されます。
  • void contextInitialized(ServletContextEvent)

    Web アプリケーションがいつでも要求を処理できるという通知。このメソッド内にコードを配置して、作成されたコンテキストが Web アプリケーション用であるかどうかを確認します。Web アプリケーション用である場合は、データベース接続を割り振り、サーブレット・コンテキスト内に接続を保管します。

  • void contextDestroyed(ServletContextEvent)

    サーブレット・コンテキストがシャットダウンしようとしているという通知。 このメソッド内にコードを配置して、作成されたコンテキストが Web アプリケーション用であるかどうかを確認します。Web アプリケーション用である場合は、サーブレット・コンテキスト内に保管されているデータベース接続をクローズします。

以下のメソッドは、 javax.servlet.ServletRequestListener インターフェースの一部として定義されます。
  • public void requestInitialized(ServletRequestEvent re)
    • 要求が有効範囲に入ろうとしているという通知

      要求は、要求を処理するフィルター・チ ェーンの最初のフィルターに入ろうとする際に、 有効範囲に入ろうとしているとして定義されます。

  • public void requestDestroyed(ServletRequestEvent re)
    • 要求が有効範囲から出ようとしているという通知

      要求は、フィルター・チェーンの最後のフィルターを出ようとする際に、 有効範囲から出ようとしているとして定義されます。

以下のリスナー・インターフェースは、 javax.servlet パッケージの一部として定義されます。

  • ServletContextListener
  • ServletContextAttributeListener

以下のフィルター・インターフェースは、 javax.servlet パッケージの一部として定義されます。

  • FilterChain インターフェース - メソッド: doFilter()

以下のイベント・クラスは、javax.servlet パッケージの一部として定義されます。

  • ServletContextEvent
  • ServletContextAttributeEvent

以下のインターフェースは、javax.servlet.http パッケージの一部として定義されます。

  • HttpSessionListener
  • HttpSessionAttributeListener
  • HttpSessionActivationListener

以下のイベント・クラスは、javax.servlet.http パッケージの一部として定義されます。

  • HttpSessionEvent

例: com.ibm.websphere.DBConnectionListener.java を使用したサーブレット・コンテキスト・リスナーの作成

次の例は、サーブレット・コンテキスト・リスナーの作成方法を示したものです。

package com.ibm.websphere;

import java.io.*;
import javax.servlet.*;

public class DBConnectionListener implements ServletContextListener
{
     // implement the required context init method
    void contextInitialized(ServletContextEvent sce)
    {
    }

     // implement the required context destroy method
    void contextDestroyed(ServletContextEvent sce)
    {
    }
}

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cweb_sctxl
ファイル名:cweb_sctxl.html