You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Kirk Hill (Jira)" <ji...@apache.org> on 2022/10/17 20:10:00 UTC
[jira] [Reopened] (DBCP-587) DBCP and Transparent Application Continuity
[ https://issues.apache.org/jira/browse/DBCP-587?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kirk Hill reopened DBCP-587:
----------------------------
Ok, So not sure if this is considered a bug so I apologize if is not. I have changed the code to work now using Datasource and here is my current code.
{code:java}
//
public class DbPoolTest { private GenericObjectPool<PoolableConnection> connectionPool = null; private static BasicDataSource dataSource; private static BasicDataSource getDataSource() { { if (dataSource == null)
{
BasicDataSource ds = new BasicDataSource();
ds.setUrl("jdbc:oracle:thin:@pdb_tac");
ds.setUsername("hr");
ds.setPassword("my_password");
ds.setDriverClassName("oracle.jdbc.driver.OracleDriver");
ds.setDefaultAutoCommit(false);
ds.setConnectionFactoryClassName("oracle.jdbc.replay.OracleDataSourceImpl");
System.out.println("DBCP classname: " + ds.getConnectionFactoryClassName()); ds.setInitialSize(5);
ds.setMinIdle(5);
ds.setMaxIdle(10);
ds.setMaxOpenPreparedStatements(100); dataSource = ds;
}
return dataSource;
} } private static PoolingDataSource setupDataSource(BasicDataSource ds ) {
ConnectionFactory connectionFactory = new DataSourceConnectionFactory(ds); PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, null);
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig(); poolConfig.setMaxTotal(4);
poolConfig.setMinIdle(3); ObjectPool objectPool = new GenericObjectPool(poolableConnectionFactory,poolConfig); System.out.println("Max connections total at setup: "
+ poolConfig.getMaxTotal()); poolableConnectionFactory.setPool(objectPool); return new PoolingDataSource(objectPool); } private GenericObjectPool<PoolableConnection> getConnectionPool() {
return connectionPool;
}
public static void main(String[] args) {
DbPoolTest demo = new DbPoolTest();
int numValue = 5000;
Connection conn = null;
BasicDataSource dataSource = DbPoolTest.getDataSource();
PoolingDataSource pds = setupDataSource(dataSource); try {
conn = pds.getConnection();
String var10001 = demo.getInstanceName(conn);
var10000.println("Instance Name = " + var10001);
System.out.println("Performing transactions");
} catch (Exception e) {
e.printStackTrace(System.out);
}
}}
{code}
Now returns this for an error.
{code:java}
//
"C:\Program Files\Java\jdk1.8.0_333\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.1\lib\idea_rt.jar=63926:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.3.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_333\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_333\jre\lib\rt.jar;C:\Users\ksh\Documents\mywork\java\test_tac\out\production\test_tac;C:\Users\ksh\Documents\mywork\java\test_tac\ucp.jar;C:\Users\ksh\Documents\mywork\java\test_tac\ojdbc8.jar;C:\oracle\product\19.0.0\client_1\jlib\oraclepki.jar;C:\Users\ksh\Documents\mywork\java\test_tac\commons-dbcp2-2.9.0.jar;C:\Users\ksh\Documents\mywork\java\test_tac\commons-pool2-2.11.1.jar;C:\Users\ksh\Documents\mywork\java\test_tac\commons-logging-1.2.jar;C:\Users\ksh\Documents\mywork\java\test_tac\commons-collections4-4.4.jar;C:\Users\ksh\Documents\mywork\java\test_tac\simplefan.jar;C:\Users\ksh\Documents\mywork\java\test_tac\ons.jar" DbPoolTest
DBCP classname: oracle.jdbc.replay.OracleDataSourceImpl
Max connections total at setup: 4
java.sql.SQLException: Cannot load ConnectionFactory implementation 'oracle.jdbc.replay.OracleDataSourceImpl'
at org.apache.commons.dbcp2.ConnectionFactoryFactory.createConnectionFactory(ConnectionFactoryFactory.java:70)
at org.apache.commons.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:459)
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:525)
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731)
at org.apache.commons.dbcp2.DataSourceConnectionFactory.createConnection(DataSourceConnectionFactory.java:83)
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:374)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:571)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:298)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223)
at org.apache.commons.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:141)
at DbPoolTest.main(DbPoolTest.java:142)
Caused by: java.lang.NoSuchMethodException: oracle.jdbc.replay.OracleDataSourceImpl.<init>(java.sql.Driver, java.lang.String, java.util.Properties)
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.getConstructor(Class.java:1825)
at org.apache.commons.dbcp2.ConnectionFactoryFactory.createConnectionFactory(ConnectionFactoryFactory.java:64)
... 10 more
{code}
With this being the culprit.
Caused by: java.lang.NoSuchMethodException: oracle.jdbc.replay.OracleDataSourceImpl.<init>(java.sql.Driver, java.lang.String, java.util.Properties)
> DBCP and Transparent Application Continuity
> -------------------------------------------
>
> Key: DBCP-587
> URL: https://issues.apache.org/jira/browse/DBCP-587
> Project: Commons DBCP
> Issue Type: Bug
> Affects Versions: 2.9.0
> Reporter: Kirk Hill
> Priority: Major
>
> Oracle databases have a high-availability setup that uses an item called Transparent Application Continuity. It requires using the following driver class name for "oracle.jdbc.replay.OracleDataSourceImpl" When I attempt to use this driver I get the following error message.
> SQLException occurred : Cannot create JDBC driver of class 'oracle.jdbc.replay.OracleDataSourceImpl'
> Having this as a way to create connection pools would greatly enhance your product.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)