如何在Oracle UCP(通用连接池)中使用TimeToLiveConnectionTimeoutCallback?
我希望PoolDataSource或UniversalConnectionPoolManager都有一个接口来注册这样的回调。我希望这样的接口将通过该接口传递有关的Connection。都不是真的。
看来我必须向每个UniversalPooledConnection注册一个单独的TimeToLiveConnectionTimeoutCallback,在我看来,这很棘手,丑陋(很多UCP导入/胶水代码)并且很困难(创建DataSource包装器)。
还是我弄错了?
不幸的是,文档仍然保持沉默。
最佳答案
经过一段时间后,我意识到我的假设是正确的。
我必须以一种棘手且毫不含糊的方式为每个Connection
注册一个回调。
我还打开了来自oracle的支持请求,该请求确认了这一点:
虚空
registerTimeToLiveConnectionTimeoutCallback(TimeToLiveConnectionTimeoutCallback
cbk)抛出java.sql.SQLException
注册生存时间连接
具有连接的超时回调。
回调对象已注册到
每个合并的连接。这是一个错误
注册多个
TimeToLiveConnectionTimeoutCallbacks
在同一个连接上,否则你
会得到一个例外。
如其中所述,回调
向每个池注册对象
连接。
由于其他一些错误和/或设计缺陷(当然,后者可能是主观的)
我决定不在我的项目中使用UCP。