2010-12-14 43 views
0

如何在Oracle UCP(通用連接池)中使用TimeToLiveConnectionTimeoutCallback?如何在Oracle UCP中使用TimeToLiveConnectionTimeoutCallback

我希望PoolDataSource或UniversalConnectionPoolManager有一個接口來註冊這樣的回調。我希望這樣的界面能夠通過界面傳遞相關的Connection。這兩個都不是真的。

看來我必須爲每個UniversalPooledConnection註冊一個單獨的TimeToLiveConnectionTimeoutCallback,這在我看來很棘手,難看(很多UCP導入/膠水代碼)和困難(創建DataSource包裝器)。

還是我錯了? 不幸的是,文檔保持沉默。

回答

0

過了一段時間,我意識到我的假設是真實的。 我必須以一種棘手和不雅的方式爲每個Connection註冊一個回調。

我還開設從Oracle 支持請求這證實了這一點:

空隙 registerTimeToLiveConnectionTimeoutCallback(TimeToLiveConnectionTimeoutCallback CBK)拋出值java.sql.SQLException

註冊一個時間 - 實時連接 帶連接的超時回調。

回調對象註冊爲 每個池連接。這是一個錯誤 註冊超過1 TimeToLiveConnectionTimeoutCallbacks 在同一連接上,否則你會得到一個異常。

正如其中所述,回調 對象註冊與EACH聯合 連接。

由於一些其他的錯誤和/或設計缺陷(當然,後者可能是主觀的) 我決定在我的項目中沒有UCP。