4.3 WAMのセッション管理

Webを基盤としたユーザーとサーバーの対話では、同じユーザー/クライアントからサーバーに多数の要求が送られます。サーバーの観点からすれば、各要求はそれぞれ固有の要求です。一方、HTTPはステートレスなプロトコルであり、同じユーザー/クライアントから送られてくる複数のWeb要求を1つの連続したセッションとして管理するための絶対的なメカニズムがありません。詳細は、 「状態非依存」を参照してください。

このような課題に対応するために、Webベースのトランザクション型のほとんどのアプリケーションでは、セッション管理のための独自のメカニズムを用意しています。WAMでは、宣言型の絶対的で安全なセッション管理メカニズムが使用されています。またセッション管理は、アプリケーションの残りの部分にもできるだけ透過的になるよう設計されています。

Webセッションのデータや状態は、サーバー上のデータベースに格納され、サーバーとブラウザーの間でやり取りされる一意のセッション・キーにより識別されます。ブラウザーには、セッションを明確に終了させるメカニズムがないので、指定の時間内に同じユーザーからの要求が送られてこなかった場合にセッションを終了するタイムアウト・メカニズムが用意されています。

詳細については、以下の項目を参照してください。

4.3.1 セッション管理の構成

4.3.2 セッション・キー方式

4.3.3 WEB_MAPの*PERSISTキーワード

4.3.4 セッション状態の保守

4.3.5 セッション管理の仕組み

4.3.6 WAMのセッション・プロパティ

4.3.7 WAMセッションの例

4.3.8 セッションの状態

WAMアプリケーションには、サーバーに依存しない形で、サーバー上にセッション状態を格納する機能があります。セッション状態を宣言するには、フィールドやリストのOPTIONS属性を*PERSISTに設定しなければなりません。*PERSISTを使用すると、そのセッションのコンテキストでWEBROUTINEが実行されている間は、フィールドやリストの変更内容がサーバー上で常にアクセス可能な状態になります。実際のセッション状態はデータベースに格納されるので、複数ストリームの実行環境を実現できます。つまり、複数のアプリケーション・サーバーをそれぞれ別々のマシンにセットアップ/構成して、拡張性を高めることが可能です。そのようにして、すべての使用可能なサーバーの間で個々のWEBROUTINE要求を共有できます。要求が出されると、WEBROUTINEのRDMLXの実行前に、セッション状態(つまり、OPTIONS(*PERSIST)が設定されているすべてのフィールドやリスト)が1つのデータベースからサーバー・メモリーに再ロードされます。WEBROUTINEが終了すると、セッション状態もアンロードされます。