- - PR -
Strutsでセッションが増え続ける謎・・・
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-03-31 20:41
こんばんわ。
Struts1.1+Tomcat4.1.24でWEBアプリを作っています。 ActionでSessionをつくり、JSPページへフォワードする ごくごく単純な構成です。 Actionに HttpSession session = request.getSession(); と記述し、このページをリロードして、 Tomcatのmanagerアプリから見てみると なんと! セッションカウントが増え続けているのです。。。。 コード的にはどうしようもないので、 web.xmlかstruts-confing.xmlの問題かもしれませんが、 みなさん、このような経験ありますか? ためしに session.getId() を outしてみたところ、 毎回、IDが違っていました。 これじゃつかえないよ・・・・・(;_;) |
|
投稿日時: 2004-03-31 21:20
ブラウザがクッキーを受け付けないように設定されているということはないでしょうか?
あと、「Strutsで」というタイトルになっていますが、Strutsと組み合わせたときだけの話ですか? 切り分けのために Struts を使わないでどうなるか、ブラウザのクッキーの設定を変えるとどうなるかお試しいただくことをお勧めします。 |
|
投稿日時: 2004-03-31 23:38
インギさん、レスありがとうございます。
普通のdoGet, doPostを使っているサーブレットは 上手くセッションを使えています。 調べたところ、ActionServletが request.getSession()を 呼んでいるようなんですよね。(ソースまでみてませんが・・) また、Cookieは有効です。 他のサーブレットでは全く正常に動いています。 ためしに ActionServletを継承したサンプルを作ってみました。 Session session = request.getSession(); System.out.println(session.getId()); return null; この3行だけなのですが、 やはり、セッションカウントはあがっており プリントされるIDも全部違っているんですよ。。。 config系の問題もしくはTomcatのバージョンの問題なのかな・・・ request.getSession(false)とするべきかと思いましたが、 J2EE仕様的に 引数なしはなければ、つくる。あれば、使うですので。。。 |
|
投稿日時: 2004-04-01 15:41
HTTP レスポンス時の JSESSIONID クッキーの値と、
その次のリクエスト時に付いている JSESSIONID クッキー の値はどうなっているでしょうか。 |
|
投稿日時: 2004-04-01 15:59
はしもとさんこんにちは。
リクエスト毎にSESSION_IDが違っているんです。 とくに invalidate() とかしていなんですけども。。 struts-config.xmlにの<init-param>に debug 3 と detail 3 というものがありました。 たぶん、関係ないですよね。これ・・ |
|
投稿日時: 2004-04-01 17:46
もう少し切り分けてみてはいかがでしょうか?
Struts1.1+Tomcat4.1.24 でSturts のサンプルアプリケーションを動かした場合はそのような現象は起きないですよね? 起きるのであれば素の状態の Tomcat なり Struts を疑いますが、起きないのであれば、いま開発中のアプリケーションとの違いを見つければいいはずです。 |
|
投稿日時: 2004-04-01 18:05
インギさん、レスありがとうございます。
そうですね。 strutsを再度DLし、サンプルとの違いを比べてみました。 違った点は web.xml の ActionServet の定義部分で <init-param>がないのみでした。 前回のプロジェクトで使ったweb.xmlを参考にしており、 ActionServletの部分はほぼコピーされておりました。 また、<init-param>を使用する用途は 今回のプロジェクトでは全くないため、 その部分を削除しました。 削除して再起動してみましたところ、 セッションカウントが増えることがなくなりました。 <init-param>debug</init-param> <value>3</value> <init-param>detail</init-param> <value>3</value> この記述が悪さをしていたのかどうかは わかりませんが、うまく動くようになりました。 以上ご報告です。。。。 |
|
投稿日時: 2004-04-05 15:42
ダメでした・・・・
わかった要因として、 開いたばかりの新しいブラウザならば、 セッションIDがリクエストとレスポンスで一致し、正常に使えますが、 ブラウザを使っていくと(色んなWEBページを見たブラウザ) セッションIDがリクエストとレスポンスで一致せず、 毎回、セッションIDが変化し、サーバ側のセッション数が増加します。 使用ブラウザはIE6.0 SP1 なのですが、 ブラウザがこんな問題起こすわけないですよね。。。 ちなみに、セッション数が増加しだすと、 IEのキャッシュをクリアして、新しいブラウザを開くと動きます。。。。>_< |
