1

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

我希望 PoolDataSource 或 UniversalConnectionPoolManager 有一个接口来注册这样的回调。我希望这样的接口会通过接口传递相关的连接。两者都不是真的。

似乎我必须向每个 UniversalPooledConnection 注册一个单独的 TimeToLiveConnectionTimeoutCallback,这在我看来很棘手、丑陋(大量 UCP 导入/胶水代码)和困难(创建一个 DataSource 包装器)。

还是我做错了什么?不幸的是,文档保持沉默。

4

1 回答 1

0

一段时间后,我意识到我的假设是正确的。我必须以Connection一种棘手且不雅的方式为每个人注册一个回调。

我还打开了来自 oracle的支持请求,证实了这一点:

void registerTimeToLiveConnectionTimeoutCallback(TimeToLiveConnectionTimeoutCallback cbk) 抛出 java.sql.SQLException

向连接注册一个生存时间连接超时回调。

回调对象注册到每个池连接。在同一连接上注册超过 1 个 TimeToLiveConnectionTimeoutCallbacks 是错误的,否则会出现异常。

如其中所述,回调对象注册到每个池连接。

由于其他一些错误和/或设计缺陷(当然,后者可能是主观的),我决定不在我的项目中使用 UCP。

于 2010-12-30T09:05:15.880 回答