2.8 アプリケーションのイベントリスナ
この節では,アプリケーションのイベントリスナ機能について説明します。
Webアプリケーション単位でのイベントリスナ機能があります。アプリケーションイベントリスナは,Webアプリケーションのデプロイ時にインスタンス化されます。インスタンス化されたアプリケーションイベントリスナは,サーブレットコンテキストオブジェクトまたはセッションオブジェクトのどちらか一方,または両方の状態変化イベントを受け取ります。リスナオブジェクトが受け取るイベントを次に示します。
-
セッションオブジェクトの新規生成
-
セッションオブジェクトのシリアライズ前※1
-
セッションオブジェクトのデシリアライズ後※1
-
セッションオブジェクトの抹消
-
セッションオブジェクトの属性の追加,削除,変更
-
サーブレットコンテキストオブジェクトの生成
-
サーブレットコンテキストオブジェクトの抹消
-
サーブレットコンテキストオブジェクトの属性の追加,削除,変更
-
Webアプリケーションへのリクエストの到着※2
-
Webアプリケーションでのリクエスト処理の完了※2
-
リクエストオブジェクトの属性の追加,削除,変更※2
-
非同期操作が完了,タイムアウト,またはエラー発生※3
- 注※1
-
サーブレットエンジンのベンダ独自処理の都合で,セッションオブジェクトをシリアライズして格納,通信し,別の時点でデシリアライズして処理を再開することが,Servlet APIでは想定されています。
セッションオブジェクトに,これらのイベント通知が設けられている意図は,セッションオブジェクトにデータだけでなく,データベースコネクションやオブジェクトリファレンスなどの資源を持たせられるようにするためです。セッションオブジェクトに資源を持たせるような設計のアプリケーションでは,シリアライズの前にいったん資源を解放し,デシリアライズ後に再び獲得するようにしなければなりません。
セッションオブジェクトに資源を持たせるという構成は,注意深く利用しないとサーバ全体の必要資源量を大幅に増大させてしまい,資源が不足するおそれがあります。このため,イベントリスナ機能は,資源を確保できる場合に利用してください。
- 注※2
-
Servlet 2.4以降の仕様に準拠したWebアプリケーションの場合だけ使用できます。
- 注※3
-
Servlet 3.0以降の仕様に準拠したWebアプリケーションの場合だけ使用できます。