You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Aaron Hamid (JIRA)" <ji...@apache.org> on 2011/05/16 23:39:47 UTC
[jira] [Created] (DBCP-360) BasicManagedDataSource fails with
OracleXADataSource
BasicManagedDataSource fails with OracleXADataSource
----------------------------------------------------
Key: DBCP-360
URL: https://issues.apache.org/jira/browse/DBCP-360
Project: Commons Dbcp
Issue Type: Bug
Affects Versions: 1.4
Reporter: Aaron Hamid
Using the same JDBC url and settings as in non-XA (driverClassName) mode, the BasicManagedDataSource will fail when it attempts to obtain an Oracle connection when using the Oracle oracle.jdbc.xa.client.OracleXADataSource datasource class.
It appears that BasicManagedDataSource.createConnectionFactory is never actually setting the URL (I can't tell where if at all it is set, the exception must occur before then).
<bean id="riceDataSource" class="org.apache.commons.dbcp.managed.BasicManagedDataSource" destroy-method="close">
<property name="transactionManager" ref="jotm" />
<property name="url" value="${datasource.url}"/>
<property name="XADataSource" value="${xadatasource.class}"/>
<property name="maxActive" value="${datasource.pool.maxActive}"/>
<property name="minIdle" value="${datasource.minIdle}" />
<property name="initialSize" value="${datasource.initialSize}"/>
<property name="validationQuery" value="${datasource.pool.validationQuery}"/>
<property name="username" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
<property name="accessToUnderlyingConnectionAllowed" value="${datasource.accessToUnderlyingConnectionAllowed}"/>
<property name="connectionProperties"><value>driverType=thin;portNumber=1521</value></property> <!-- as rumored on the internets -->
</bean>
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:200)
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:276)
at ConnectionTest$1.doInTransaction(ConnectionTest.java:79)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
at ConnectionTest.testConnectionRecovery(ConnectionTest.java:76)
at ConnectionTest.testOracleBMDSXARecovery(ConnectionTest.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.sql.SQLException: Invalid Oracle URL specified: OracleDataSource.makeURL
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.pool.OracleDataSource.makeURL(OracleDataSource.java:1353)
at oracle.jdbc.pool.OracleDataSource.getURL(OracleDataSource.java:1064)
at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:204)
at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:159)
at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:133)
at org.apache.commons.dbcp.managed.DataSourceXAConnectionFactory.createConnection(DataSourceXAConnectionFactory.java:103)
at org.apache.commons.dbcp.managed.PoolableManagedConnectionFactory.makeObject(PoolableManagedConnectionFactory.java:103)
at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:196)
... 31 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Closed] (DBCP-360) BasicManagedDataSource fails with
OracleXADataSource
Posted by "Aaron Hamid (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DBCP-360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aaron Hamid closed DBCP-360.
----------------------------
> BasicManagedDataSource fails with OracleXADataSource
> ----------------------------------------------------
>
> Key: DBCP-360
> URL: https://issues.apache.org/jira/browse/DBCP-360
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.4
> Reporter: Aaron Hamid
>
> Using the same JDBC url and settings as in non-XA (driverClassName) mode, the BasicManagedDataSource will fail when it attempts to obtain an Oracle connection when using the Oracle oracle.jdbc.xa.client.OracleXADataSource datasource class.
> It appears that BasicManagedDataSource.createConnectionFactory is never actually setting the URL (I can't tell where if at all it is set, the exception must occur before then).
> <bean id="riceDataSource" class="org.apache.commons.dbcp.managed.BasicManagedDataSource" destroy-method="close">
> <property name="transactionManager" ref="jotm" />
> <property name="url" value="${datasource.url}"/>
> <property name="XADataSource" value="${xadatasource.class}"/>
> <property name="maxActive" value="${datasource.pool.maxActive}"/>
> <property name="minIdle" value="${datasource.minIdle}" />
> <property name="initialSize" value="${datasource.initialSize}"/>
> <property name="validationQuery" value="${datasource.pool.validationQuery}"/>
> <property name="username" value="${datasource.username}" />
> <property name="password" value="${datasource.password}" />
> <property name="accessToUnderlyingConnectionAllowed" value="${datasource.accessToUnderlyingConnectionAllowed}"/>
> <property name="connectionProperties"><value>driverType=thin;portNumber=1521</value></property> <!-- as rumored on the internets -->
> </bean>
> org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
> Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
> at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:200)
> at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
> at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
> at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
> at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
> at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:276)
> at ConnectionTest$1.doInTransaction(ConnectionTest.java:79)
> at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
> at ConnectionTest.testConnectionRecovery(ConnectionTest.java:76)
> at ConnectionTest.testOracleBMDSXARecovery(ConnectionTest.java:58)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
> at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
> at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
> at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
> at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.sql.SQLException: Invalid Oracle URL specified: OracleDataSource.makeURL
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
> at oracle.jdbc.pool.OracleDataSource.makeURL(OracleDataSource.java:1353)
> at oracle.jdbc.pool.OracleDataSource.getURL(OracleDataSource.java:1064)
> at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:204)
> at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:159)
> at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:133)
> at org.apache.commons.dbcp.managed.DataSourceXAConnectionFactory.createConnection(DataSourceXAConnectionFactory.java:103)
> at org.apache.commons.dbcp.managed.PoolableManagedConnectionFactory.makeObject(PoolableManagedConnectionFactory.java:103)
> at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
> at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:196)
> ... 31 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Resolved] (DBCP-360) BasicManagedDataSource fails with
OracleXADataSource
Posted by "Aaron Hamid (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DBCP-360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aaron Hamid resolved DBCP-360.
------------------------------
Resolution: Invalid
invalid, the supported pattern is to inject a preconfigured XADataSource instance. it might be worth making this a bit clearer in the docs: "NOTE: your XADataSource implementation may require implementation-specific properties to be set. If so, you must inject a preconstructed XADataSource object via setXaDataSource.
> BasicManagedDataSource fails with OracleXADataSource
> ----------------------------------------------------
>
> Key: DBCP-360
> URL: https://issues.apache.org/jira/browse/DBCP-360
> Project: Commons Dbcp
> Issue Type: Bug
> Affects Versions: 1.4
> Reporter: Aaron Hamid
>
> Using the same JDBC url and settings as in non-XA (driverClassName) mode, the BasicManagedDataSource will fail when it attempts to obtain an Oracle connection when using the Oracle oracle.jdbc.xa.client.OracleXADataSource datasource class.
> It appears that BasicManagedDataSource.createConnectionFactory is never actually setting the URL (I can't tell where if at all it is set, the exception must occur before then).
> <bean id="riceDataSource" class="org.apache.commons.dbcp.managed.BasicManagedDataSource" destroy-method="close">
> <property name="transactionManager" ref="jotm" />
> <property name="url" value="${datasource.url}"/>
> <property name="XADataSource" value="${xadatasource.class}"/>
> <property name="maxActive" value="${datasource.pool.maxActive}"/>
> <property name="minIdle" value="${datasource.minIdle}" />
> <property name="initialSize" value="${datasource.initialSize}"/>
> <property name="validationQuery" value="${datasource.pool.validationQuery}"/>
> <property name="username" value="${datasource.username}" />
> <property name="password" value="${datasource.password}" />
> <property name="accessToUnderlyingConnectionAllowed" value="${datasource.accessToUnderlyingConnectionAllowed}"/>
> <property name="connectionProperties"><value>driverType=thin;portNumber=1521</value></property> <!-- as rumored on the internets -->
> </bean>
> org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
> Caused by: java.sql.SQLException: Cannot create PoolableConnectionFactory (Invalid Oracle URL specified: OracleDataSource.makeURL)
> at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:200)
> at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
> at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
> at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:113)
> at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
> at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:276)
> at ConnectionTest$1.doInTransaction(ConnectionTest.java:79)
> at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:127)
> at ConnectionTest.testConnectionRecovery(ConnectionTest.java:76)
> at ConnectionTest.testOracleBMDSXARecovery(ConnectionTest.java:58)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:616)
> at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
> at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
> at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
> at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
> at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
> at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
> at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
> at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
> at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
> at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
> at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
> at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.sql.SQLException: Invalid Oracle URL specified: OracleDataSource.makeURL
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
> at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
> at oracle.jdbc.pool.OracleDataSource.makeURL(OracleDataSource.java:1353)
> at oracle.jdbc.pool.OracleDataSource.getURL(OracleDataSource.java:1064)
> at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:204)
> at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:159)
> at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:133)
> at org.apache.commons.dbcp.managed.DataSourceXAConnectionFactory.createConnection(DataSourceXAConnectionFactory.java:103)
> at org.apache.commons.dbcp.managed.PoolableManagedConnectionFactory.makeObject(PoolableManagedConnectionFactory.java:103)
> at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
> at org.apache.commons.dbcp.managed.BasicManagedDataSource.createPoolableConnectionFactory(BasicManagedDataSource.java:196)
> ... 31 more
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira