问题描述
我正在使用dbcp2(2.7)进行连接池。所有数据源对象都是通过代码创建的(然后绑定到JNDI)。
对于非XA连接,一切正常。要求数据库适配器创建ConnectionPoolDataSource
实例,该实例可用于产生数据库池连接。然后,创建一个SharedPoolDataSource
实例以从该连接池数据源中获取(该实例仅产生PooledConnection
个实例,这些实例是常规连接的包装,但适用于连接池)。 SharedPoolDataSource
的实例是进一步馈送的(即绑定到JNDI并提供给JPA等),因此获取使用的连接来自我配置的池。一切都很好。
现在,我想更改它以使用XA。因此,为合并数据源而返回的连接是XA连接,并且在检索时会被征入事务中。
我在dbcp2
中看到的唯一数据源是SharedPoolDataSource
。我在org.apache.commons.dbcp2.managed
中看到了一整套与XA相关的类,但是它们都不产生适合于池化的连接或实现池化的数据源。
有一个BasicManagedDataSource
,但没有合并,它来自数据库驱动程序提供的XADataSource
。
在这一点上,我什至还不太了解如何协调池连接和XA连接。 XAConnection
确实扩展了PooledConnection
,所以我可以在池中使用它,但是XADataSource
不扩展ConnectionPoolDataSource
,所以我不能将其用作池化连接的源
显然,我缺少正确的方法来堆叠这些数据源,但是我无法解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)