- ベストアンサー
javaでのセッションについて
javaでのセッションについてお聞きしたい事があります。 セッションについて下記のページを参考にしました。↓ http://www.atmarkit.co.jp/fjava/javafaq/session/session04.html このページにセッションのタイムアウトについて書いてあったのですが、 その中の文章で 「Webアプリケーションの場合は、ユーザーが処理の途中でブラウザを閉じるということもありますので、必ずしもログアウト処理が行われるとは限りません。このような場合は、クライアント側は処理を終了しているのにもかかわらず、サーバ側にはそのクライアントに対するセッション情報が残ってしまいます」 というのがあったのですが、 自分の作成したwebアプリケーションで セッションを開始した(セッションオブジェクト(HttpSessionインターフェースのオブジェクト)作成)後、明示的に(コーディング上で)セッションを終了していないのに、ブラウザの右上の×ボタンで閉じた後、再びwebアプリケーションで処理を開始すると、セッションオブジェクトがnullになっていました。 ここで、「セッションオブジェクトがnull」=「セッション情報が残っている」と言うのは、間違いでよろしいのでしょうか? 自分は上記の文章で、「セッション情報が残っている」=「セッションオブジェクトがnullでない」と解釈しているのですが。 何か分かる事がありましたら、ご教授お願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「セッション情報が残っている」=「セッションオブジェクトがnullでない」といいう解釈自体は間違いではないですが、これを理解するにはアプリケーションサーバーのセッションの仕組みを理解する必要があるでしょう。 そもそもHTTP自体はセッションレスのプロトコルです。では、セッション情報の正体はというと、実はクライアントのWebブラウザのCookieにサーバー側で発行した「セッションID」というものを保存させることで成立します。 このセッションIDは、ブラウザを開いてWebアプリケーションサーバーにアクセスしたときに発行されます。次回に同じブラウザから要求が来たときには、サーバー側で、ブラウザが持っているCookieのセッションIDを参照し、保持しておいたセッション情報の中から、そのセッションIDに該当するセッションオブジェクトを返します。 こういう仕組なものですから、×ボタンでブラウザを閉じて再びアクセスすると、新しいセッションIDが発行され、以前のセッション情報との関連性がなくなります。つまり、セッション=nullになります。 従いまして『ログアウトに何らかの処理をしている場合、×ボタンを押されてしまったときの考慮も必要ですよ』ということです。ここでいう何らかの処理とは、例えばショッピングサイトで、カートに入れた商品のために引き当てた在庫を戻すとか、そういった処理のことです。 特別な処理がない場合は、放っておいても問題ありませんが、誰からも参照されることがないセッション情報がどんどん溜まってしまうので、注意が必要です。
その他の回答 (2)
- yuji
- ベストアンサー率37% (64/169)
>セッション情報が溜まっていても特に気にする必要はないのでしょうか? セッション情報はサーバのメモリ上に常駐しますから、 その分メモリが必要になります。 1 メモリを増やす。 2 いらないセッション情報は早めに削除するようにする。 などの対策を取る必要があるでしょう。
お礼
回答ありがとうございます。 >セッション情報はサーバのメモリ上に常駐しますから、 >その分メモリが必要になります。 そういうことなのですね。 セッションについては大分解ってきたような(?)気がします。 まだまだ勉強が足らない自分ですが、 今後とも宜しく御願いします。 今回はどうもありがとうございました。
- yuji
- ベストアンサー率37% (64/169)
>誰からも参照される事がないセッション情報を放って置いた場合は、「一定時間経つと自動的にセッション情報はなくなる」と解釈してもよろしいのでしょうか? その答えはあなたが見ていたページの最後にあります。
補足
回答ありがとうございます。 誰からも参照される事がないセッション情報を放って置いた場合は、 一定時間経つと自動的にセッション情報はなくなるので、 セッション情報が溜まっていても特に気にする必要はないのでしょうか?
補足
早い回答ありがとうございます。 >こういう仕組なものですから、×ボタンでブラウザを閉じて再びアクセスすると、>新しいセッションIDが発行され、以前のセッション情報との関連性がなくなりま >す。つまり、セッション=nullになります。 ご丁寧な説明をして下さったおかげでよく分かりました。 >特別な処理がない場合は、放っておいても問題ありませんが、誰からも参照される>ことがないセッション情報がどんどん溜まってしまうので、注意が必要です。 誰からも参照される事がないセッション情報を放って置いた場合は、「一定時間経つと自動的にセッション情報はなくなる」と解釈してもよろしいのでしょうか?