私は c3p0 とあなたが引用した段落の著者です。
unreturnedConnectionTimeoutは、その名前とドキュメントの状態とまったく同じです: 返されない接続のタイムアウトです。ユーザーからのフィードバックに応えて、しぶしぶ実装されました。これは、クライアントがチェックアウトした接続を確実にチェックインする場合、必要または有用ではないためです。それが実装されたとき、開発者が unreturnedConnectionTimeout に怠惰に依存するのではなく、クライアント アプリケーションを修正するように促すために、2 つ目の未承諾の構成パラメーター debugUnreturnedConnectionStackTraces を追加しました。
unreturnedConnectionTimeoutの定義はおかしなことではありません。通常、接続プールを使用するアプリケーションは、接続を長期間チェックアウトしたままにしません。これを行うと、パフォーマンスを大幅に低下させることなく、アプリケーションが必要に応じて接続を取得できるようにするという接続プールの目的に反します。接続プールに代わるものは、アプリケーションが接続をチェックアウトし、それらを長期間保持して、いつでも使用できるようにすることです。しかし、長期間接続を維持するのは複雑であることが判明したため、ほとんどのアプリケーションはこれを c3p0 のようなプーリング ライブラリに委譲します。
簡単に変更できない長期間の接続を維持する既存のアプリケーションがあることを理解しています。長期間有効な接続を直接維持するアプリケーションと、プールに委任するアプリケーションとの間のハイブリッド アーキテクチャが必要です。特に、アプリケーションがすでに保持するように設計されている長寿命の接続を維持するのに役立つライブラリが必要です。
残念ながら、c3p0 はそのライブラリではありません。c3p0 (ほとんどの接続プール ライブラリと同様) は、チェックアウトされた接続をクライアントのプロパティと見なし、それらがチェックインされるまで保守作業を行いません。これには 2 つの例外があります。それらがあまりにも長い間チェックアウトされていた場合、c3p0 は、例外が発生したときにチェックアウトされた接続を目に見えないようにテストして、例外が発生した接続がプールに戻るのに適しているかどうか、またはチェックイン時に破棄する必要があるかどうかを判断します。
unreturnedConnectionTimeoutは、必要なパラメーターではありません。Connectionsが一定期間非アクティブになったときに自動的に閉じるが、Connections を無期限にチェックアウトできるようにするものが必要です。そのようなパラメータは と呼ばれる可能性がありinactiveConnectionTimout
、c3p0 に追加される可能性がある機能ですが、まだ追加されていません。チェックアウトされた Connection を長期間保持するアプリケーションはほとんどなく、c3p0 には、Connection がチェックインされた後、または Connection がチェックアウトとチェックインの間で遷移するときの障害を観察するのに役立つ機能が満載です。
あなたの(かなり珍しい)ケースでは、これは、単にライブラリによって提供されていない機能が必要であることを意味します。そのことについて謝ります!