当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2017年10月25日水曜日

スコープ変数の有効期間について

みなさん、こんにちは。10月になり急に冷え込みました。
体調を崩しやすくなっていますので、くれぐれも気を付けてくださいね。


今日はXPagesのスコープ変数についての話題です。
ご存知の通り、スコープ変数には、
  • applicationScope
  • sessionScope
  • viewScope
  • requestScope
の4種類があります。

当ブログでは、セッションスコープ変数はどこで使われているのか?という記事で一度だけ取り扱ったことがあります。
ですが、それも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の私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: