複数ページ・サポート・アーキテクチャー

JViews ページ ID 機能を有効にすると、アプリケーション・セッションの期間中、JViews が各ページ要求を追跡し、実行依頼中の Web ページとそのページ要求をリンクすることができます。ページ ID 機能を有効にするには、『複数のブラウザー・ページ用の Web アプリケーションの設計』を参照してください。
次の図は、同じセッション・オブジェクトおよび Bean を共有する 2 ページ (ページ<A> およびページ<B>) を示しています。すべてのコンテキスト・データは、ページに依存しており、個別に保管されています。
同じセッション・オブジェクト内でページ A および B が開いています。セッション Bean は、ページ ID を使用して両方のページの状態を保存しています。
複数ページ・サポートの概念的な要件は、比較的単純 (コンテキスト・データを個別に保管する必要がある) ですが、Web ブラウザーは、そのタブおよびウィンドウを一意に識別しないため、アプリケーション・サーバーは、HTTP 要求ヘッダーを検査するだけでは、異なるブラウザー・ページを識別することができません。ブラウザー固有のキューがない場合は、ページを追跡し、ページごとにコンテキスト・データを保管する手法を Web アプリケーションが実装する必要があります。
JViews は、そのカスタム JSF コンポーネントである JavaScript ライブラリーとイメージ・サーブレットを結合して、発信元のブラウザーに関係なく、各 Web ページの内部 ID を作成して管理する手法を実装しています。ID に関連付けられたページが最初にロードされるときに、その ID がブラウザーに送信され、次に要求パラメーター形式で その ID がサーバーに返されます。
最初の要求に対するサーバーの応答と共にページ ID (Page-Id) がブラウザーに送信される様子を以下の図に示します。
最初の Web 要求でページ ID が作成されます。サーバーは、ページ・スタイリング、ページ ID、JavaScript、および Document Object Model を含む応答をブラウザーに送信します。
Web ページ (図のページ<B>) のページ ID (Page-Id) が各要求のパラメーターとしてサーバーに返されると、そのサーバーは、要求元のページを正しく識別することができます。ページ ID は、セッションまたはその他のストレージ域からコンテキスト・データを取得するためにサーバーによって使用されます。
ページ ID (Page-Id) がその他の要求パラメーターと共にサーバーに送信される様子を以下の図に示します。
同じブラウザー・ページから送信される 2 番目の Web 要求では、サーバーがコンテキスト・データの取得に使用するページ ID で、要求のすべてのパラメーターがタグ付けされます。
ブラウザーがアクティブではなくなったときのみ、セッションの有効期限が切れます。