1

Oracle UCP (ユニバーサル接続プール) 内で TimeToLiveConnectionTimeoutCallback を使用する方法は?

PoolDataSource または UniversalConnectionPoolManager のいずれかに、そのようなコールバックを登録するためのインターフェースがあると思います。そして、そのようなインターフェースは、関係する接続をインターフェースによって渡すと予想します。どちらも真実ではありません。

各 UniversalPooledConnection に個々の TimeToLiveConnectionTimeoutCallback を登録する必要があるようです。これは、扱いにくく、見苦しく (多くの UCP インポート/グルー コード)、難しい (DataSource ラッパーを作成する) ように思えます。

それとも私は何か間違っていましたか?残念ながら、ドキュメントは沈黙したままです。

4

1 に答える 1

0

しばらくして、私の仮定が正しいことに気づきました。Connectionトリッキーでエレガントでない方法で、それぞれにコールバックを登録する必要があります。

また、これを確認したオラクルからのサポートリクエストを開きました:

void registerTimeToLiveConnectionTimeoutCallback(TimeToLiveConnectionTimeoutCallback cbk) が java.sql.SQLException をスローします。

Time-to-Live 接続タイムアウト コールバックを接続に登録します。

コールバック オブジェクトは、プールされた各接続に登録されます。同じ接続で複数の TimeToLiveConnectionTimeoutCallbacks を登録するとエラーになります。そうしないと、例外が発生します。

その中で述べたように、コールバック オブジェクトはプールされた各接続に登録されます。

他のいくつかのバグや設計上の欠陥 (もちろん、後者は主観的かもしれません) のため、プロジェクト内で UCP を使用しないことにしました。

于 2010-12-30T09:05:15.880 に答える