2016-08-23 14 views
1

自動構成のTomcatプーリングを持つSpringブートベースのアプリケーションを開発中ですDataSource私は別のDBスキーマの下で同じOracleストアドプロシージャを呼び出さなければなりません(それらのすべてに実行許可があります)。ユーザ/パスワードのリストはあらかじめ指定されていません。しかし、私はプロシージャコールの時点で資格情報を知っています。私は接続を受け取るdataSourceオブジェクトのgetConnection(ユーザー、パスワード)メソッドを使用し、正常に動作します。しかし、ユーザA、ユーザB、ユーザAの順番に3回ずつプロシージャを呼び出すと、接続メソッドreconnect()は2回呼び出されます(ユーザBと2番目の呼び出しではユーザAと一緒に) - ConnectionPoolオブジェクトはDataSourceで使用され、アイドルキューから同じ接続をポップし、そのユーザーとパスワードを確認し、新しい資格情報で再度DBに接続します。結果として、私は接続プールのすべての利点を失う。Jdbc接続プール(ユーザー名別接続キャッシュあり)

私に教えてください、接続プールのいくつかの実装は、ユーザー名によるアイドル接続をキャッシュしますか?または、再接続時間を短縮するための別の方法ですか?残念ながら、Oracleのプロシージャを変更したり、ラッパーを実装することはできません。

+2

ユーザー名ではいけません。個人がグループIDの代わりに自分の信任状でデータベースにログインするように提案していますか? – duffymo

+0

残念ながら、それは記述された方法で実装されています。プロシージャはテーブルの一部のレコードを更新し、この更新を開始したユーザーに関する情報も格納する必要があります –

答えて

2

C3P0 ComboPooledDataSourceはかなり良い解決策です。ユーザーのパスワードキーでマップに接続プールを保存します