Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Tomcatがキャッシュ?

お世話になります。

Webアプリで原因がわからない現象が発生しているので、アドバイスをお願いいたします。

Tomcat5.5でログイン、ログアウトする処理のあるWebアプリを開発しております。

ログイン時、あるMapを作成し、ServletContext.setAttribute("name", map)という風に、そのMapをApplicationスコープの変数に設定しております。

そのMapの内容はJSPに表示して利用します。

そして、ログアウト時にServletContext.setAttribute("name", null)という風にApplicationスコープ変数を削除しております。

ところが、次回ログイン時にMapの内容を変えて、ServletContext.setAttribute("name", map)を行ったはずなのに、Mapの同じキーで取得できる値が、前回のもののままになってしまっており、変更が反映されません。

ブラウザのキャッシュを削除しても反映されず、
Tomcatを再起動すると変更が反映されます。

この現象について、原因、もしくは、原因の推測がある方、アドバイスいただけると幸いです。

よろしくお願いいたします。

3

回答

10297

閲覧

3件の回答

評価

0

そういう状態になったことはないけど。
試しにworkディレクトリを消してみたら?

評価

0

マップのインスタンス、あるいはその内容が、
本当に新しく変わっているのかどうか、確認するとか。

評価

0

$さん、不良社員さん

アドバイスありがとうございます。

ご提案いただいた切り分けを行った結果、原因が判明しました。

業務上詳しいことは言えなくて申し訳ないですが、使用しているJavaライブラリが持っているキャッシュ機能が原因でした。

勝手に前回の値をキャッシュしているようですので、変更が反映されませんでした。

返事が遅くなってしまいましたが、ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。