[Seasar-user:4111] Re: S2のコネクションプーリングについて

齋藤 宗範 [E-MAIL ADDRESS DELETED]
2006年 7月 18日 (火) 17:02:13 JST


お疲れ様です。
齋藤です。

小林様
カーソルの件ですが、再調査した結果、
ループ処理の中で何度もPreparedStatementを生成していて、
最後に生成されたPreparedStatementのみをクローズしていたことが
原因だったことがわかりました。

こちらの不手際により、お手数をおかけして申し訳ありませんでした。
ご教授ありがとうございました。

> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]]On Behalf Of Koichi Kobayashi
> Sent: Saturday, July 15, 2006 8:01 PM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:4086] Re: S2のコネクションプーリングについて
>
>
> 小林 (koichik) です.
>
> Date:    Fri, 14 Jul 2006 12:00:59 +0900
> From:    齋藤 宗範 <[E-MAIL ADDRESS DELETED]>
> To:      <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:4075] S2のコネクションプーリングについて
>
> > DIコンテナからデータソースを取得し、DBアクセスをしています。
> > DBアクセスをした後にResultSet>PreparedStatement>Connectionの順に
> > close()を呼び出しているのですが、DBのカーソルが残ったままになります。
> > 何度も処理を実行するとカーソルの上限を超えてしまい、エラーが発生してしま
> いま
> > す。
> >
> > oracle のカーソルの上限をあげる以外にエラーを回避する方法はあるのでしょ
う
>> > ?
> > もしくは、何か設定もれがあるのでしょうか?
>
> まずは,クローズされていないカーソルをオープンしているのが
> どこなのかを突き止める必要がありますね.
> 可能であれば,Eclipse などの IDE 上でブレークポイントを設定して,
> カーソルの増減をチェックしながらステップ実行するなどして頂けると
> 原因を見つけられるのではないかと思います.
> また,S2DBCP および S2Dao が出力するログもヒントになるかも
> しれないので,差し障りのある部分を除いて添付して頂けると助かります.
>
>
> 率直に言うと,S2DBCP や S2Dao にクローズ漏れが残っている可能性は
> あまり多くないと考えています.
> 原因としてすぐに思いついたのは,リクエスト毎など,繰り返し
> S2Container がインスタンス化されて destory() されていない
> ケースです.
> その場合,プールされたコネクションが解放されないまま,新しい
> コンテナと共にコネクションプールも作成されることになります.
>
> S2JSF や S2Struts の設定をそのまま使っているならこういうことは
> ないと思いますが,もし S2Container の初期化を独自に行っているので
> あれば,その部分のコードも提示して頂けると何か分かるかもしれません.
>
>
>
> --
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user




Seasar-user メーリングリストの案内