- PR -

セッションに登録したコネクションオブジェクトの接続プールへの返却方法について

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-09-02 11:38
引用:

忍者鳥取県さんの書き込み (2003-09-02 09:38) より:

下記ソースは、前回のせたソースを呼び出すStrutsのアクションクラスですが

 SessionData data;
 data = new SessionData();
 hs.setAttribute("data",data);

の部分でセッションごとに SessionDataのオブジェクトを作成しています。
このため、このグローバル変数は各々のセッションでしか参照されません。
ちょっとこの部分のソースを前回載せていなかったので誤解が生じたのかも
しれません・・・m(_ _)mペコリンコ
もし static変数でコネクション等を宣言していれば、スレッドセーフに
なるように設計しないといけないですよね。


ご回答ありがとうございました。
誤解>いや、流れでこの状態を把握しておかなければいけないですね。失礼しました。

別件です。
これまでの話を読んで、私もあえて苦労までしてセッション維持にこだわらなければ
ならない理由がみえません。もしかすると、DBをロックするのが目的ですか?
班長
会議室デビュー日: 2003/09/02
投稿数: 2
投稿日時: 2003-09-02 15:21
このスレッドの最初から読んでみましたが、私のような初心者は質問すらためらわれるような感じです。専門用語はともかく、説明する言葉の表現によって受け取る側の印象がずいぶん違ってくるんだなあと実感。それにしても、文字だけで現象を説明するのは質問者も回答者も大変ですね。勉強になります。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-09-02 15:58
 コネクションの枯渇の問題が何度も指摘されていますが、
これってWEBアプリケーションの問題だけじゃないんじゃって気もするのですが・・・。
私はクライアントアプリケーションの経験が殆ど無いんですが、
たまたま今携わっているシステムがVB+Javaというシステムなのです。
VBの方はフォームロード時にDBに接続して、終了時にコネクションを切断しています。
Javaの方はコネクションプーリングを行っており、
当然ですがコネクションはリクエスト毎にコネクションプーリングへ返却しております。
それで問題なのがこのシステムって約3400人くらいの人が使うシステムなんですが、
DBの最大接続数が少なく(500?)、そのうえ処理時間が結構長いのです。
例えば、印刷のボタンを押して、
パトロールに行って帰ってきたら帳票が出力されていればいいやなんて代物なのです。
こんなことなんで、コネクションはすぐに枯渇してしまっています(^^
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2003-09-02 16:00
>専門用語はともかく、説明する言葉の表現によって受け取る側の印象がずいぶん違ってくるんだなあと実感。

すみません。私は文章下手なんで挑発的な文章になってしまうこともあります(反省、、)
少し無理して断定的な書き方をしているからかもしれません。

質問者さん(忍者鳥取県さん)のお考えは皆さんよくわかっていると思います。
ですが重視するものが違うので話が噛み合っていないのでしょう。

忍者鳥取県さんは「最初に検索(select)した瞬間のデータを常に表示したい」と
いうのが最重要課題。ConnectionをSessionに入れてしまえば
一見うまく動くようになるので、「これでいいジャン」と思われるでしょう。

回答者の皆さんは、経験からConnectionをSessionに入れること自体が良くないこと、
避けるべきこと、という頭があるので、
「それは危険ですよ」「そんな危険ことしなくても他に方法がありますよ」
という流れになってます。
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-09-02 16:52
自分の場合、サーバーサイドアプリはperlから入ったんですが、最初perlの文法を覚えるより
セッションをステートレスなhttpでどうやるのかを理解するのに随分かかった記憶があり
ます。リクエストが不特定のクライアントから同時に飛んできた時ってどうやって識別するの?
セッションを維持するためにはどうすればよいか・・・等。パズルに近かった。
これって理解するというより、体得しないとわからないですよね。
(特にクライアントアプリの感覚で考えると理解するのが大変です。)
ですので、恐らく今回の場合も問題点に気づくまでにひょっとすると時間がかかるかもしれ
ないような気が・・・。ただ、早い時点で問題点の整理をしておかないと、コーディングが
進んだ後でやり直し、という事態になってしまいます。それを心配しています。
班長
会議室デビュー日: 2003/09/02
投稿数: 2
投稿日時: 2003-09-02 17:52
kitoさんの書き込みより:

すみません。私は文章下手なんで挑発的な文章になってしまうこともあります(反省、、)
少し無理して断定的な書き方をしているからかもしれません。


そんなことありません。 
kitoさん、すごく丁寧で親切な文面だなあと思ってましたよ。
わからないことがあった時に、疑問を投げかけると見ず知らずの人でも親切にアドバイスをして
くださるというのは心強いです。



[ メッセージ編集済み 編集者: 班長 編集日時 2003-09-02 18:16 ]
未記入
大ベテラン
会議室デビュー日: 2003/06/28
投稿数: 219
投稿日時: 2003-09-02 22:43
度々すいません。
セッションを考える上で何か良い例はないかと考えていましたが、この掲示板 phpBB を
眺めていると答えが見えてくるような気がします。
phpですので、セッションオブジェクトという考え方が直接あるわけではありません。
また、Cookieを使っていますが、セッションに直接関わっているわけではないはずです。
あくまで補助的なものですね。でもちゃんとしたページングをしています・・よね。
javan
会議室デビュー日: 2003/03/03
投稿数: 18
投稿日時: 2003-09-03 20:58
それで結局、忍者鳥取県さんはどうなさるのでしょうか?
皆さんの意見に納得してセッションにコネクションオブジェクトをセット
することはやめるのでしょうか?

気になります。


[ メッセージ編集済み 編集者: javan 編集日時 2003-09-03 20:59 ]

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