- - PR -
コネクションプーリングについて
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-02 10:28
ちょま吉様、返答ありがとうございます。
例外が起こってしまった場合、スローしてしまっているので 直接的には返せていません。 接続してるクラスのfinalize()で返すことになってます。 しかし、接続数のコントロールがうまく出来ていれば例外が起こることは 無いと思われるので、これが原因とは思えないです。 | ||||||||
|
投稿日時: 2004-09-02 11:36
kito様、返答ありがとうございます。
正におっしゃる通りで、リクエスト毎に生成してました。 コネクションプーリングの実装が始めてだったもので、 初歩的な間違いをしていたみたいです。。。 教えて頂いたとおりにアプリケーション初期化時に アプリケーションスコープにDataSourceをバインドしておくことにより、 解決いたしました。(キャッシュってこの方法で大丈夫ですよね?) 本当にありがとうございました。 | ||||||||
|
投稿日時: 2004-09-02 11:46
taku様、返答ありがとうございます。
せっかく教えて頂いたのですが、私が無知のあまり 根本的な所が間違っていました。申し訳ありません。 しかし、PostgreSQLのJDBCドライバにプーリング機能があるのは 初めてしりました。ありがとうございました。 | ||||||||
|
投稿日時: 2004-09-02 23:36
余談ですが、、、。 コネクションプーリングは、だいたいシングルトンパターンで実装されているのではないでしょうか? つまりアプリケーションスコープに保持しておくのではなく、シングルトンパターンを用いてDataSourceをアプリケーション内で唯一のオブジェクトとして保持するのが一般的と思っています。 | ||||||||
|
投稿日時: 2004-09-03 01:43
DataSourceを共有する必要は全く無いので、Servletなどの 適当に寿命の長いオブジェクトのメンバにしてしまって良いです。 ApplicationContextに保持してしまうと使うときに探さないといけないので あまり嬉しくないような気がします。 Strutsは使ったことがないのでわからないですが、 多分Actionかなにかのメンバにするんじゃないでしょうか?
あれ?コネクションプールとDataSourceがごっちゃになってません? 「コネクションプール」はあるコンテキスト中で唯一でなければなりませんが、 DataSourceはいわばコネクションを取り出す窓口みたいなものなので、 いくつあっても困ることはありません。 唯一のDataSourceを使いまわすのはほとんど意味が無いので、普通ではないと思います。 | ||||||||
|
投稿日時: 2004-09-03 11:06
返答ありがとうございます。
また質問させてください。
との事ですが、アプリケーションスコープにバインドしておく方法というのは、 なにか問題があるのでしょうか?それとも普通はやらない、という事でしょうか? お恥ずかしいのですが、システムはもうほぼ出来上がっています。そこで サーブレットのメンバにするとなると、全サーブレットに手を加える必要がありますので、 もしバインドが問題が無いようであれば、出来るだけ避けたいのですが・・・ よろしくお願いします。 | ||||||||
|
投稿日時: 2004-09-03 12:44
申し訳御座いません。おっしゃる通りごっちゃになってました。っというよりもよくわかっていなかったです。おはずかしい(^^; | ||||||||
|
投稿日時: 2004-09-03 17:18
動作上の問題は無いです。 と言うか、Struts は標準で DataSource を ApplicationContext に 設定する機構を持っています。 でも、現在ではこの機構は非推奨です。 理由は、DataSource が Web 層に保持されても、 あまり嬉しくない場合が多いし、 コンテナから JNDI 経由で貰えるからです。 | ||||||||
