アプリケーション・ライフ・サイクルのリスナーとイベント (現在はサーブレット API の一部) を使用すると、 サーブレットのコンテキストやセッションに変更があった場合に、 関係のあるリスナーに通知できます。 例えば、属性に変更があった場合や、セッションまたはサーブレット・コンテキストが作成または破棄された場合に、 ユーザーに通知できます。
ライフ・サイクル・リスナーにより、アプリケーション開発者は、 ServletContext および HttpSession オブジェクトとの対話に対してより強力な制御が得られます。 サーブレット・コンテキスト・リスナーは、リソースをアプリケーション・レベルで管理します。 セッション・リスナーは、 1 つのクライアントからの一連の要求に関連付けられたリソースを管理します。 リスナーは、ライフ・サイクル・イベントおよび属性変更イベントで利用可能です。 リスナー開発者は、必要なリスナー機能に応じて、 javax リスナー・インターフェースをインプリメントするクラスを作成します。
アプリケーションの起動時に、コンテナーは、イントロスペクションを使用して、 リスナー・クラスのインスタンスを作成し、それを該当のイベント・ジェネレーターに登録します。
サーブレット・コンテキストが作成されるとき、このコンテキストがアプリケーションに適している場合は、 リスナー・クラスの contextInitialized メソッドが呼び出され、 このメソッドにより、使用するアプリケーションのサーブレットのためにデータベース接続が作成されます。 すべてのサーブレット・コンテキスト・リスナーは、 Web アプリケーションのすべてのサーブレットが初期化される前に、 コンテキストの初期化について通知されます。
サーブレット・コンテキストが破棄されるとき、 このコンテキストがアプリケーションに適している場合は、 contextDestroyed メソッドが呼び出され、このメソッドがデータベース接続を解放します。 すべてのサーブレットは、 サーブレット・コンテキスト・リスナーがコンテキスト消滅を通知される前に破棄される必要があります。
セッション・リスナーに対する通知は、コンテキスト・リスナーへの通知より前に行われます。