- PR -

session IDを複数割り当てる方法

投稿者投稿内容
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-26 17:44
うーん、unibonさんが仰るとおり根本的になにか勘違いされている可能性がありますね。
「片方の画面の検索がクローズされてしまう」とは具体的にどういう現象でしょう?
「検索がクローズ」っていうのがどうも想像つきません。
それぞれの画面は別々のスレッドで実行されます。セッションIDが同一でもそれぞれ別のコネクションを取得してクエリを投げている限り全く独立して実行することができます。

もしデータベースのコネクションを取得後、HttpSession にコネクションを格納しておいて、後で使い回すような実装なのでしょうか?
HttpSession にコネクションが存在すればそれを利用するけど、別のスレッドでコネクションがクローズされてしまうとか・・・。
だとしたらそういった実装はやめましょう。毎回コネクションを取得するべきです。

「まずセッションIDを変える」ことからは離れて考えた方が幸せと思います。

>セッションについては詳しくなかったので、「親のA画面からB画面を開いたときに、A画面からB画面
>に引き継がれたセッションIDを変更させたい」と思っておりました。それはやはり無理のようですね。
できないことはありませんが、通常無意味です。
みきてぃ
会議室デビュー日: 2005/09/16
投稿数: 14
投稿日時: 2006-03-01 23:34
インギ様返信ありがとうございます。

「検索がクローズ」というのは、B画面とC画面で検索を行っている時、片方の検索が完了で終了してしまったと同時にもう片方の検索も検索途中ですが終了してしまうという現象です。

プリペアド・ステートメントが原因でこの現象が起きているようです。

この場合、改善させるためにはどのような方法がよいでしょうか。

あと、今後の参考のためとりあえずセッションを複数作成する方法もご教授いただけないでしょうか?


今回のことでセッションの大切さが大いにわかってきた気がします。申し訳ありませんが解決までたくさんの方面から導いてくださいますようよろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-02 02:40
PreparedStatement をインスタンス変数で保持しているということでしょうか?
Connection や PreparedStatement は使い回さずに毎回取得するようにしましょう。

セッションを複数作成する方法は今後のためにも忘れた方が良いです。
少なくともクッキーを受け入れる設定の場合難しいかも。
ブラウザがクッキーを受け入れる設定のままTomcat 側で Cookie によるセッショントラッキングを無効にして、URL書き換えのみでセッションを保持する方法もありますが・・・、今回それをすべきではありません。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8667&forum=12

B画面を2つ開いて検索、とかやったら簡単に破綻します。
みきてぃ
会議室デビュー日: 2005/09/16
投稿数: 14
投稿日時: 2006-03-02 22:11
インギ様返信ありがとうございます。

確かにコネクションの使い回しはよくありませんね。問題が発生するまで使い回しをしていることは知りませんでした。

「URL書き換えのみでセッションを保持」する方法というのはURL Rewriting手法ということでしょうか?この手法ですとインギ様がおっしゃられるように同じ画面で同時に検索を行った場合まだもや問題が発生してしまいます。


当方としては
「親画面のセッションIDとは別のセッションIDをランダムな文字で設定する」
または
「親画面から引き継がれたセッションIDに子画面ごとの固定値を付け加える」

ことができるのかどうかが疑問なのですが、可能なのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-03 03:30
画面毎にセッションIDを持たせることはURL書き換えを使えば技術的には可能です。
しかし、今回の障害に関しては解決策になりません。
例えば検索処理中にリロードしただけで破綻してしまうのではないでしょうか?

不要な使い回しをやめるようにして対応しましょう。
みきてぃ
会議室デビュー日: 2005/09/16
投稿数: 14
投稿日時: 2006-03-14 01:56
インギ様回答ありがとうございます。

結論として、URL書き換えはしないこととしました。DBへの接続の見直しから始めようと思います。


長い間お付き合いいただきましてありがとうございました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-03-14 04:59
お疲れさまです。そうですね、妙な回避策をとって妙な副作用に悩むよりも根本的な対策をとるのが一番でしょう。
Webアプリケーションはマルチスレッドで動作しますので、気をつけていないと処理に時間を要する場合や負荷が掛かった場合に妙な動作をします。
慣れないと気持ち悪いものですが、よく整理して考えればそれほど複雑なことではありませんのでがんばってください。

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