- - PR -
セッション
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-07-07 11:54
Javaは素人で本の知識だけで初歩的質問ですが、Javaはセッションタイムアウトが発生してもサーバーサイドのスレッドは死なないと何処かで見た様な気がしたのですが?
今、セッションタイムアウトが発生した場合にそれを通知する共通で用いられる障害表示画面があり、確認応答後にログイン画面へ戻る様に成っています。 今回、新システムができ、独自のログイン画面が出来てしまったため障害表示画面で確認応答後にどのログイン画面へ戻るか判定する必要が出来ました。 実行時、どの処理が動いているかを識別する情報がSESSIONに書き込まれているのですが、セッションタイムアウトが発生した場合には解放され取得できなくなるのでしょうか? また、解放されるとしたら何がタイムアウトに成ったか識別する方法は有りますか? | ||||
|
投稿日時: 2004-07-07 12:03
1.SessionTimeout後に、そのSessionコンテキストに格納されているオブジェクトを取得することはできません。
2.SessionTimeout時に、Servletコンテキストに格納すれば、残すことができます。 SessionTimeoutのイベントは、HttpSessionListenerを使えば取得できます。 (ServletコンテキストはServletで1つしかないことに注意してください) | ||||
|
投稿日時: 2004-07-07 12:47
早々、ご解答有難う御座いました。
まだ、具体的にどうコーディングすれば良いかは判っていませんが、勉強しながら改修作業に入って見ます。 | ||||
|
投稿日時: 2004-07-08 09:50
済みません。試してみれば良いのでしょうが作業環境も無く改修計画を練っている最中でして、また、お知恵を拝借したいのですがよろしくお願いいたします。
>1.SessionTimeout後に、そのSessionコンテキストに格納されているオブジェクトを取得することはできません。 >2.SessionTimeout時に、Servletコンテキストに格納すれば、残すことができます。 >SessionTimeoutのイベントは、HttpSessionListenerを使えば取得できます。 >(ServletコンテキストはServletで1つしかないことに注意してください) 質問に上げたタイムアウトの画面以外に数画面、共通のものがあります。 これらの画面はフレームワークの配下で動いています。従って、Clusterさんから指摘を受けた様にServletコンテキストは一つしか無さそうです。 従って、属性名にセッションIDをプラスして、識別コードを格納しようと思ったのですがタイムアウト時にはセッションIDが取れなさそうですからプラスして見に行けそうも無いと思われます。 何か良い方法が有ればご教授願います。 なお、SessionTimeoutのイベント(HttpSessionListener)が発生した時点ではセッションIDはまだ取得できる状態でしょうか? 以上 | ||||
|
投稿日時: 2004-07-08 10:25
>なお、SessionTimeoutのイベント(HttpSessionListener)が発生した時点ではセッションIDはまだ取得
>できる状態でしょうか? API ドキュメントや仕様書を参照しましょう。 | ||||
|
投稿日時: 2004-07-08 13:03
ごめんなさい、ちょっと疑問なんですが この2.ってListenerでは生きているsessionオブジェクト を拾ってこれないですよね? どうやら、ログインのための識別子はsessionに入っている みたいなんで、これだとむりなのかなぁと思いました。 私なんか勘違いしてますかね? | ||||
|
投稿日時: 2004-07-08 13:47
あれ?そうなんですか?(自分では試してなかった てっきり、HttpSessionEvent#getSession()で取ってこれると思ってたんですが。 ・・・ちょっと調べてみたら、こんな投稿がありました。 APサーバー依存なんですかねぇ? | ||||
|
投稿日時: 2004-07-08 14:23
どうも、Servlet 2.4から仕様が変わったらしいです。
| ||||
