- - PR -
staticなHashtableからのデータ削除
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-13 16:22
Webアプリで、誰がログイン・アウトしたかの情報を知るために、
セッションが破棄されたとき、誰のセッションが破棄されたのかを出力するるように、 下記のようにしています。
セッションIDをキーにしてユーザー名を、"Hashtable"に持たせるようにしています。 動き的には、誰のセッションが切れたのかがわかるのでいいのですが、 static で、Hashtableに情報をもっていますので、 sessionDestroyed の中の ・hse.getSession() ・session.getId() でエラーが起こった場合、(起こらないかもしれませんが・・・) ・List.remove(session.getId()); が行われません。 となると、セッションIDをキーにしてますので、Tomcatを再起動されるまで、 永遠とList(メモリ)に残ってしまうことになるので、(なりますよね?) Hashtableに、"ユーザー名"と一緒に"セッションの作成時刻"も一緒に持たせて sessionDestroyed が呼び出されるときに、 List に持たせている情報で作成時刻が1日以上たっているものをチェックして、 削除するようにしようかと思ったのですが、セッション数が多いとまずいかなぁ〜と・・・。 何かいいアイデアを頂けないしょうか? ・・・上記のようなエラーは起こらないのでしょうか? よろしくお願いします。m(_ _)m | ||||
|
投稿日時: 2006-01-13 17:00
>・hse.getSession()
>・session.getId() >でエラーが起こった場合、(起こらないかもしれませんが・・・) 起こらないので心配しなくて大丈夫です。 仕様上は例外もエラーも発生しないことになってますので。 もしそこでエラーが発生するようでしたら Tomcat または JVM 自体正常に動いていませんのでどのような対策をとってもリカバリできないかと。 関係ないですが、List っていうのは別に同名のインターフェースがあるのでちょっと誤解を招きやすい変数名です。あまりオススメできません。 #どちらかといえば List ではなくて Map のはずですし・・ [ メッセージ編集済み 編集者: インギ 編集日時 2006-01-13 17:26 ] | ||||
|
投稿日時: 2006-01-13 17:29
インギさん、返答ありがとうございます。
> 起こらないので心配しなくて大丈夫です。 起こらないんですね、安心しました。 > 関係ないですが、List っていうのは別に同名のインターフェースがあるので > ちょっと誤解を招きやすい変数名です。あまりオススメできません。 名前は変えようと思います。 また質問のときは、よろしくお願いします。m(_ _)m |
1