springboot+Atomikos+Druid+mybiats下mysql连接正常,oracle连接不正常

发布于 2022-01-05 01:38:09 字数 3062 浏览 790 评论 1

使用com.alibaba.druid.pool.xa.DruidXADataSource时Mysql连接正常,oracle连接不正常,oracle使用的是ojdbc6,代码片段

 AtomikosDataSourceBean adsb = new AtomikosDataSourceBean();
 DruidXADataSource druidXADataSource = (DruidXADataSource)ds;                         
druidXADataSource.setName(dataSourceName);
 initDruidFilters(druidXADataSource);
 adsb.setUniqueResourceName(dataSourceName);
 adsb.setXaDataSourceClassName(druidXADataSource.getClass().getName());
  adsb.setXaDataSource(druidXADataSource);
  targetDataResources.put(dataSourceName,adsb);

访问Oracle数据库报错,其中输出druidXADataSource连接信息都正常:


java.lang.NullPointerException: null
 at oracle.jdbc.driver.PhysicalConnection.cacheBuffer(PhysicalConnection.java:6811)
 at oracle.jdbc.driver.OraclePreparedStatement.releaseBuffers(OraclePreparedStatement.java:3012)
 at oracle.jdbc.driver.T4CPreparedStatement.releaseBuffers(T4CPreparedStatement.java:241)
 at oracle.jdbc.driver.OraclePreparedStatement.enterImplicitCache(OraclePreparedStatement.java:3094)
 at oracle.jdbc.driver.OraclePreparedStatementWrapper.enterImplicitCache(OraclePreparedStatementWrapper.java:1588)
 at com.alibaba.druid.util.OracleUtils.enterImplicitCache(OracleUtils.java:65)
 at com.alibaba.druid.pool.PreparedStatementPool.put(PreparedStatementPool.java:83)
 at com.alibaba.druid.pool.DruidPooledConnection.closePoolableStatement(DruidPooledConnection.java:163)
 at com.alibaba.druid.pool.DruidPooledPreparedStatement.close(DruidPooledPreparedStatement.java:201)
 at com.atomikos.jdbc.AbstractConnectionProxy.forceCloseAllPendingStatements(AbstractConnectionProxy.java:63)
 at com.atomikos.jdbc.AtomikosConnectionProxy.close(AtomikosConnectionProxy.java:240)
 at com.atomikos.jdbc.AtomikosConnectionProxy.invoke(AtomikosConnectionProxy.java:155)

但是调整为com.alibaba.druid.pool.DruidDataSource,Oracle数据的db-type指定为mysql时,下面代码Mysql和Oracle都可以访问

                            DruidDataSource druidDataSource = (DruidDataSource)ds;
                            druidDataSource.setName(dataSourceName);
                            initDruidFilters(druidDataSource);
                            targetDataResources.put(dataSourceName,druidDataSource);

 

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妖妓 2022-01-05 18:56:40

你设置数据源了,就没必要setXaDataSourceClassName了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文