4.3.8 セッションの状態
セッションには、以下の4つの状態があります。
状態 |
意味 |
Invalid |
セッションを識別するためのセッション・キーが提供されていないか、サーバーによって認識されているセッション・キーと一致しない状態 |
Expired |
セッション・キーは有効なセッションを示しているものの、同じセッションから出された前の要求からの経過時間がSessionTimeoutの値を超えている状態 |
Active |
セッション・キーが既知の有効なセッションを示しており、同じサーバーから出された前の要求からの経過時間がSessionTimeoutの値を超えていない状態 |
None |
デザイン時に宣言的に使用され、有効なセッションのコンテキストなしでWEBROUTINEが実行できることを示す。WAMレベルでSessionStatusにActiveが設定される場合は、少なくとも1つのWEBROUTINEでOnEntry(*SessionStatus_None)キーワードを指定し、そのWEBROUTINEからWAMアプリケーションに入って新しいセッションを作成できるようにする必要がある。 |
考え方としては、無効なセッションと有効期限が切れたセッションの扱いは同じです。いずれの状態でも、有効なセッションのコンテキストを必要とする(つまり、SessionStatusプロパティがActiveに設定されている) WEBROUTINEは実行されません。
WAMでは、SessionInvalidイベント・ハンドラーを用意することによって、無効または有効期限切れのセッションを処理できます。このハンドラーでは、別のWEBROUTINEへのTRANSFERや、無効または有効期限切れのセッションを処理する他の操作を実行できます。SessionInvalidハンドラーを用意すれば、(アプリケーションでセッション確認が必須であったとしても)すべてのWEBROUTINEの検査が必要なくなります。全てのセッション確認はWAMレベルで行われ、無効なセッションについてはSessionInvalidイベントが起動されるので、無効なセッションの処理をWAMレベルでカスタマイズできます。
SessionInvalidハンドラーを用意しない場合は、WAMの無効なセッションのための標準ページがブラウザーに返されます。
セッションの有効期限が切れても、セッション状態はただちにセッション・データベースから削除されるわけではありません。これは、ピーク時のサーバーの負荷を減らすための動作です。トランザクション・モニターは、有効期限が切れたセッション状態のクリーンアップを周期的に実行します。この周期的なクリーンアップを無効にして、ピーク時以外にクリーンアップを実行するためのスケジュールを設定することも可能です。