体調を崩しやすくなっていますので、くれぐれも気を付けてくださいね。
今日はXPagesのスコープ変数についての話題です。
ご存知の通り、スコープ変数には、
- applicationScope
- sessionScope
- viewScope
- requestScope
当ブログでは、セッションスコープ変数はどこで使われているのか?という記事で一度だけ取り扱ったことがあります。
ですが、それもsessionScope変数に限った話であり薄っぺらいものでした。
そこで今回はもう少し詳しく見ていこうと思います。
それぞれのスコープ変数には、有効範囲や有効期間といったものがありますが、主に有効期間について見ていきます。
1.applicationScope
概要
Notes アプリケーションに対して設定されるもので、アプリケーション利用者全員で共有します。アプリケーション利用者が最初にアクセスした時点で設定されます。
有効期間
有効期間は、最後にアプリケーションにアクセスした後、決められた時間までです。その時間を経過すると初期化(クリア)されます。
この時間は、デフォルトは30分ですが、Notes アプリケーションの「XSPプロパティ」の中にある「アプリケーションタイムアウト」で変更することができます。
2.sessionScope
概要
ユーザーごとに設定されるもので、各アプリケーション利用者が最初にアクセスした時点で設定されます。有効期間
有効期間は、最後にアプリケーションにアクセスした後、決められた時間までです。その時間を経過すると初期化(クリア)されます。
この時間は、デフォルトは30分ですが、Notes アプリケーションの「XSPプロパティ」の中にある「セッションタイムアウト」で変更することができます。
3.viewScope
概要
ユーザーごとでなおかつ同一ページ内で利用されるもので、各アプリケーション利用者が最初にアクセスした時点で設定されます。有効期間
有効期間は、ページ遷移が発生するタイミングまでです。別のページを開いた瞬間に値がクリアされます。部分更新を続ける限りは値は保持されたままになります。明確なタイムアウトの時間は設定されていませんが、applicationScopeがクリアされるときには同時にviewScope変数もクリアされます。
制限事項
その他、同一ページ上に存在できる上限数といった制限事項もあります。4.requestScope
概要
ユーザーごとでなおかつ、単一のHTTPリクエストが処理されている間だけアクセス可能なものです。有効期間
HTTPリクエストが処理して、返信用のHTMLデータを作成後、返信が完了した時点でクリアされます。上記を踏まえて、簡単なテスト用のXPagesアプリケーションを作ってみました。
![]() |
テストアプリケーションの画面 |
最初はAnonymousユーザー(匿名)の状態になっています。
この状態で各スコープ変数に値をセットした後、ログインすると・・・
なぜかsessionScope変数はクリアされずに残っています。
この様子をビデオに録画してみましたので実際にご確認ください。
同一のブラウザで別ユーザーで利用することはないかと思いますが、スコープ変数を正しく管理することを考慮して、ページのロード時にログインしているユーザー名を考慮しながら、初期化するような処理を追加した方がいいかもしれません。
なお、今回の情報は
XPages アプリケーションにおけるセッション管理
を参考にしています。
詳しく書かれていますので一度熟読することをお勧めします。
それでは今日はこの辺で・・・
Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→

0 件のコメント:
コメントを投稿