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

我希望PoolDataSource或UniversalConnectionPoolManager都有一个接口来注册这样的回调。我希望这样的接口将通过该接口传递有关的Connection。都不是真的。

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

还是我弄错了?
不幸的是,文档仍然保持沉默。

最佳答案

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

我还打开了来自oracle的支持请求,该请求确认了这一点:


  虚空
  registerTimeToLiveConnectionTimeoutCallback(TimeToLiveConnectionTimeoutCallback
  cbk)抛出java.sql.SQLException
  
  注册生存时间连接
  具有连接的超时回调。
  
  回调对象已注册到
  每个合并的连接。这是一个错误
  注册多个
  TimeToLiveConnectionTimeoutCallbacks
  在同一个连接上,否则你
  会得到一个例外。
  
  如其中所述,回调
  向每个池注册对象
  连接。


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

07-24 09:33