【发布时间】:2017-10-27 00:31:54
【问题描述】:
据我了解DataSource 连接有两种类型,javax.sql.DataSource 和javax.sql.XADataSource,this tutorial 解释说javax.sql.DataSource 赋予连接池化的能力,javax.sql.XADataSource 赋予连接分布式交易行为。
我知道大多数XADataSource 将实现连接池以及分布式事务,因此当您可以使用XADataSource 并同时使用两者时,我认为使用DataSource 没有意义。
在选择XADataSource 而不是DataSource 时是否有任何权衡?
我知道XADataSource 使用池连接不是强制性的,有没有办法查明XADataSource 是使用池连接还是仅依赖XADataSource 提供者的文档?
编辑:
我指的是javax.sql.DataSource 和javax.sql.XADataSource,因为它们是types Tomcat 8 factory gives you:
类型应始终为 javax.sql.DataSource 或 javax.sql.XADataSource
取决于类型 org.apache.tomcat.jdbc.pool.DataSource 或 org.apache.tomcat.jdbc.pool.XADataSource 将被创建。
我明白最后我会在我的代码上使用DataSource 作为 API,抽象底层实现......我的问题与我必须经历的决策过程有关配置Tomcat 8(或任何其他服务器)。
我想要池连接,并且有许多XADataSource 实现可以提供事务连接和池连接,那么如果我能获得更多,为什么不总是使用XADataSource? (这当然不适用于不实现池连接的XADataSource)
【问题讨论】:
-
XADataSource用于two-phase提交以同步不同应用程序实例使用的数据。我只记得在处理Oracle ATG Commerce时的这种差异,它使用JTDataSource在引擎盖下有XADataSource。
标签: java jdbc datasource connection-pooling