- PR -

Strutsでセッションが増え続ける謎・・・

投稿者投稿内容
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-04-06 12:53
引用:
ダメでした・・・・



Struts のサンプルアプリでも、素の Servlet でもダメだったのですか ?

引用:
セッションIDがリクエストとレスポンスで一致せず、



これはどの様に確認したのでしょう。 HTTP レベルですか。
具体的に、どう一致しないのでしょう。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-04-07 09:32
引用:

Struts のサンプルアプリでも、素の Servlet でもダメだったのですか ?


ブラウザのキャッシュの状態(?)によって、
現象がでたりでなかったりなので、
今から検証してみます。

引用:
セッションIDがリクエストとレスポンスで一致せず、



これはどの様に確認したのでしょう。 HTTP レベルですか。
具体的に、どう一致しないのでしょう。

[/quote]

ActionAからActionBへリンクするときに、
違うセッションIDがサーバ側で生成されてしまいます。
ActionAとActionBでsessionIDを取得して表示してみました。
ブラウザスコープは同一です。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 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 です。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-04-07 13:47
複数のコンテキストやサイトにアクセスしている場合は JSESSIONID クッキーが
複数あってもおかしくありません。

前回の同一コンテキストからの応答で得られた JSESSIONID クッキーが、
次回の同一コンテクストへの要求で送信されていれば、ブラウザの動作は
おかしくないと思います。

Tomcat4 には RequestDumperValve というのがあります。
標準の server.xml ではコメントアウトされていると思いますが、
これを有効にすると、catalina_log.*.txt にリクエストとレスポンスの
状態がログ出力されます。このログを見れば、リクエスト毎の
JSESSIONID の変化が解かり易いと思います。

ちなみに、その中で requestedSessionId に表示されるセッション ID が
そのリクエストで Tomcat が採用したセッション ID です。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 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アプリです。

そもそもの設定でしょうか。。。。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-04-08 15:23
引用:
raystarさんの書き込み (2004-04-07 14:00) より:
2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=JSESSIONID=5376194382A854D03222E13AFC7537FA
2004-04-07 13:50:40 RequestDumperValve[Standalone]: cookie=JSESSIONID=A8A044592446D8A78A2D0D8F2248764D



前回のリクエスト時のセッション ID が、この 2 つの JSESSIONID のどちらかと
一致しているなら、ブラウザ (と、C/S 間) は問題無い様に思います。

ところで、Tomcat に付属しているサンプル・ウェブアプリとか、どんなものでも
この現象って発生するんですよねぇ。だとしたらもう Tomcat の設定の問題としか
考えられない気がするんですけど、Tomcat でセッションの設定って、Manager 要素
しか無いですよねぇ...

raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-04-08 15:30
はしもとさん、なんどもすみません><

一つわかったことがあります。
これもStrutsのみで確認されたものなんですが、
セッションタイムアウト時間を越えたブラウザが
この現象を生み出すようです。
そこで、COOKIEに問題あるのかと思い、
使用COOKIEをリスティングしてみたところ、
DOMAIN COOKIE が一つ、BROWSER COOKIE が一つずつありました。

DOMAIN COOKIEは使用実績があるのですが、
重ねて使ったケースとBROWSER COOKIEを使ったケースは初めてです。

SESSIONを使うときにBROWSER COOKIEなどが使えないというケースは
あるのでしょうか。。

これもJSP/HTTP SERVLET では出ない現象なのです・・・

スキルアップ/キャリアアップ(JOB@IT)