- PR -

Tomcatの発行するセッションID

1
投稿者投稿内容
じゃぱん
会議室デビュー日: 2004/06/18
投稿数: 5
投稿日時: 2004-06-18 23:52
初めて投稿させていただきます。

現在Tomcat5.0をアプリケーションサーバとして用たWebサイトを構築しています。
個人情報の管理として、アプリケーションサーバのセッション機能を利用しています。

そこで疑問に思ったことなのですが,
Tomcatの発行するセッションID(jsessionid)は同じIDが発行される可能性は0%なのでしょうか?
例えばIDの生成にはシステム時間を利用した乱数の発生方法等を用いているようなことはしているのでしょうか?
もし、0%でないということになると万が一セッションのタイムアウト時間までの間に同一のIDが発行された時のために、別途チェック用のロジックを組む必要があると考えています。


どなたか,TomcatのセッションIDに関してお詳しい方いらっしゃいましたら,ご教授願えませんでしょうか?


宜しくお願いいたします。

山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-06-19 00:14
・セッションIDの桁数をどれくらいに設定しているのか
・セッションタイムアウトをどれくらいに設定しているか
・単位時間あたりに最大でどれくらいの新規セッションが作成されるのか
といった変数がわからないと確立は計算できませんね。

通常の設定ではセッションIDの重複以前に高負荷による OutOfMemoryError を心配する必要があります。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-06-19 00:18 ]
tu
会議室デビュー日: 2003/07/31
投稿数: 11
投稿日時: 2004-06-19 00:49
セッションIDは桁数が一定ですので、例え時間などを加味して計算
していたとしても、同じIDになる確率が0というのは言い過ぎだと
思います... 現実的に心配するような確率ではない、という程度だと
想像します。

と書いてみて、金融系とかのシステムだとどうしているのか、不意に
疑問に思いました。現在有効なセッションIDと同じIDが得られてしまった
場合、再度IDを計算して求め、重複がおこらないようにする、
といった仕組みでも組み込んでいるのでしょうかね。

というか、Tomcatでもこの程度の処理は組み込んであるのでしょうか? > 識者の方

[ メッセージ編集済み 編集者: tu 編集日時 2004-06-19 00:51 ]
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2004-06-19 15:59
5.0 のソースは見たことないので 4.1.30 のソースを基にします。

Tomcat がセッションを生成しているのは、標準では、
org.apache.catalina.session.ManagerBase クラスの
createSession() メソッドです。

そのメソッド内で、アクティブなセッション ID と重複する ID が
生成された場合、セッション ID を生成し直すループが存在します。
このループを抜ける条件は、重複しないセッション ID が生成された
場合だけです。

よって、アクティブなセッション ID が重複する事はありえないと思います。
じゃぱん
会議室デビュー日: 2004/06/18
投稿数: 5
投稿日時: 2004-06-19 20:11
インギさん、tuさん、はしもとさん、ご返信どうもありがとうございます。

ひとまずアクティブなセッション ID が重複する事はありえないということが保証されることが確認できて安心しました。
インギさんのおっしゃる通り、OutOfMemoryErrorの件も検討しなければならないと思っています。

また何かありましたら,宜しくお願いいたします。
1

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