- PR -

JAVAの開発でDataSourceをもちいたコネクションプーリングについて

1
投稿者投稿内容
1977SE
会議室デビュー日: 2007/08/23
投稿数: 6
投稿日時: 2007-08-26 23:25
こんばんわ

JAVAの開発でDataSourceをもちいたコネクションプーリングについて質問があります。

環境は以下です。
AP:Tomcat5.5
DB:postgres
DB接続方法「DataSource」、
     Context ファイル(Tomcat 5.5\conf\Catalina\localhost)を用いた接続

----------------
Context ファイルは、以下の接続です。
<Resource name="jdbc/postgres"
auth="Container"
      logAbandoned="true"
type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql******"
username="***"
password="**"
initialSize="10"
maxIdle="10"
      maxActive="0"
maxWait="30000"
removeAbandoned="true"
removeAbandonedTimeout="300"
/>
----------------

maxActive="0"にしているのですが、一般的なシステムの運用ではあまりないケースなのでしょうか?
やはり、maxActiveに制限をかけ、制限を超えた場合は、「しばらくたってから再度実行してください。」などのエラーメッセージを設定するのが妥当でしょうか?
また、制限を越えたエラーの一般的な取得方法があるなら教えてもらえませんか?

稚拙な文章で申し訳ありません。
可能な範囲でのご回答宜しくお願いします。
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2007-08-27 23:35
引用:
1977SEさんの書き込み (2007-08-26 23:25) より:

maxActive="0"にしているのですが、一般的なシステムの運用ではあまりないケースなのでしょうか?
やはり、maxActiveに制限をかけ、制限を超えた場合は、「しばらくたってから再度実行してください。」などのエラーメッセージを設定するのが妥当でしょうか?



制限しなくても正常に動く事が分かっているのなら制限しなくて良いと思います。
制限する必要があるなら当然制限に達した際の処理が必要でしょう。

引用:
また、制限を越えたエラーの一般的な取得方法があるなら教えてもらえませんか?



制限を超えると maxWait ミリ秒待ちます。
それでも Connection が取得出来なかった場合は
org.apache.commons.dbcp.SQLNestedException が投げられます。

制限を超えたエラーなのかどうかは
この例外のメッセージ内容から一応分かります。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-08-28 00:42
アプリケーションサーバのスレッド数と、コネクションの最大数と合わせると、
基本的にはコネクションが足りないってことはありません。

基本的というのは、DB側がそもそもコネクション数をカバーしていること、
適切にプールに対してリソースが解放されていることが前提となります。
1

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