- - PR -
Strutsでセッションが増え続ける謎・・・
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-04-06 12:53
Struts のサンプルアプリでも、素の Servlet でもダメだったのですか ?
これはどの様に確認したのでしょう。 HTTP レベルですか。 具体的に、どう一致しないのでしょう。 | ||||||||
|
投稿日時: 2004-04-07 09:32
ブラウザのキャッシュの状態(?)によって、 現象がでたりでなかったりなので、 今から検証してみます。
これはどの様に確認したのでしょう。 HTTP レベルですか。 具体的に、どう一致しないのでしょう。 [/quote] ActionAからActionBへリンクするときに、 違うセッションIDがサーバ側で生成されてしまいます。 ActionAとActionBでsessionIDを取得して表示してみました。 ブラウザスコープは同一です。 | ||||||||
|
投稿日時: 2004-04-07 11:00
HTTP_HEADERを取得してCOOKIE情報をSystem.outしてみました。
cookie : LOGIN_INFO=raystar; JSESSIONID=F5C147E19EF77A98C190813A0A62C5ED; JSESSIONID=C4DD962B 218E8FE5F6996C460E8E7F58; Login=raystar; clickedFolderTestTree=; JSESSIONID=DFA914A08A863E1DD3BDBC46E02EC51E; clicke dFoldercheckboxTree=; clickedFolder=1%5E JSESSIONIDが沢山くっついていました。 SESSIONは一意のKEYであるから、1つだと思っておりましたが、 これはブラウザの問題になってしまうのでしょうか。 使用ブラウザはIE6.0 SP1 です。 | ||||||||
|
投稿日時: 2004-04-07 13:47
複数のコンテキストやサイトにアクセスしている場合は JSESSIONID クッキーが
複数あってもおかしくありません。 前回の同一コンテキストからの応答で得られた JSESSIONID クッキーが、 次回の同一コンテクストへの要求で送信されていれば、ブラウザの動作は おかしくないと思います。 Tomcat4 には RequestDumperValve というのがあります。 標準の server.xml ではコメントアウトされていると思いますが、 これを有効にすると、catalina_log.*.txt にリクエストとレスポンスの 状態がログ出力されます。このログを見れば、リクエスト毎の JSESSIONID の変化が解かり易いと思います。 ちなみに、その中で requestedSessionId に表示されるセッション ID が そのリクエストで Tomcat が採用したセッション ID です。 | ||||||||
|
投稿日時: 2004-04-07 14:00
はしもとさん、レスありがとうございます。
さっそくValveを有効にし、ログを見てみました。 2004-04-07 13:50:40 RequestDumperValve[Standalone]: REQUEST URI =/ies/ 2004-04-07 13:50:40 RequestDumperValve[Standalone]: authType=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: characterEncoding=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: contentLength=-1 2004-04-07 13:50:40 RequestDumperValve[Standalone]: contentType=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: contextPath= 2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=LOGIN_INFO=raystar 2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=JSESSIONID=5376194382A854D03222E13AFC7537FA 2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=JSESSIONID=A8A044592446D8A78A2D0D8F2248764D 2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=IS_Login=ID%3Dtnakanishi%40systech-i.co.jp%26SPEED%3DTRUE 2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=clickedFolderTestTree= 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=accept=*/* 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=accept-language=ja 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=accept-encoding=gzip, deflate 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=user-agent=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322) 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=host=XX.XXX.co.jp 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=connection=Keep-Alive 2004-04-07 13:50:40 RequestDumperValve[Standalone]: header=cookie=LOGIN_INFO=raystar; JSESSIONID=5376194382A854D03222E13AFC7537FA; JSESSIONID=A8A044592446D8A78A2D0D8F2248764D; Login=ID%raystar%26SPEED%3DTRUE; clickedFolderTestTree= 2004-04-07 13:50:40 RequestDumperValve[Standalone]: locale=ja 2004-04-07 13:50:40 RequestDumperValve[Standalone]: method=GET 2004-04-07 13:50:40 RequestDumperValve[Standalone]: pathInfo=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: protocol=HTTP/1.1 2004-04-07 13:50:40 RequestDumperValve[Standalone]: queryString=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: remoteAddr=192.168.0.126 2004-04-07 13:50:40 RequestDumperValve[Standalone]: remoteHost=XX.XXX.co.jp 2004-04-07 13:50:40 RequestDumperValve[Standalone]: remoteUser=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: requestedSessionId=5376194382A854D03222E13AFC7537FA 2004-04-07 13:50:40 RequestDumperValve[Standalone]: scheme=http 2004-04-07 13:50:40 RequestDumperValve[Standalone]: serverName=XX.XXX.co.jp 2004-04-07 13:50:40 RequestDumperValve[Standalone]: serverPort=80 2004-04-07 13:50:40 RequestDumperValve[Standalone]: servletPath=null 2004-04-07 13:50:40 RequestDumperValve[Standalone]: isSecure=false しかし、ServletでSystem.out.println(session.getId())を行うと 表示された文字列は 0469131683C7C48609D7247D2CDDB4C3 となっており、一致しませんでした。。。 現在、ページをリロードするとセッションカウントが2ずつ増えていきます。 確認したのはTomcatのManagerアプリです。 そもそもの設定でしょうか。。。。 | ||||||||
|
投稿日時: 2004-04-08 15:23
前回のリクエスト時のセッション ID が、この 2 つの JSESSIONID のどちらかと 一致しているなら、ブラウザ (と、C/S 間) は問題無い様に思います。 ところで、Tomcat に付属しているサンプル・ウェブアプリとか、どんなものでも この現象って発生するんですよねぇ。だとしたらもう Tomcat の設定の問題としか 考えられない気がするんですけど、Tomcat でセッションの設定って、Manager 要素 しか無いですよねぇ... | ||||||||
|
投稿日時: 2004-04-08 15:30
はしもとさん、なんどもすみません><
一つわかったことがあります。 これもStrutsのみで確認されたものなんですが、 セッションタイムアウト時間を越えたブラウザが この現象を生み出すようです。 そこで、COOKIEに問題あるのかと思い、 使用COOKIEをリスティングしてみたところ、 DOMAIN COOKIE が一つ、BROWSER COOKIE が一つずつありました。 DOMAIN COOKIEは使用実績があるのですが、 重ねて使ったケースとBROWSER COOKIEを使ったケースは初めてです。 SESSIONを使うときにBROWSER COOKIEなどが使えないというケースは あるのでしょうか。。 これもJSP/HTTP SERVLET では出ない現象なのです・・・ | ||||||||
