java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection
database, jdbc, oracle, sql
Solution
you are using Oracle-specific API that expects your Connection to be a particular Oracle Connection class. But the Connection you are working with is a c3p0 proxy Connection, not that Oracle Connection class.
if you want to use the Oracle-specific api, you have a few choices:
- you can use c3p0's raw Connection operations, see http://www.mchange.com/projects/c3p0/index.html#raw_connection_ops for the precise example you are looking for;
- c3p0 actually ships with a jar file for Oracle that performs this operation. it's rarely used and ages old, though, so a grain of salt;
- you can upgrade to a prerelease version of c3p0-0.9.5, which supports the full JDBC4 api, and use the unwrap operation to extract the raw Oracle Connection.
good luck!
Problem
i am getting the following ``` java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection ``` when the following code executes. could you please help me how to solve. ``` ComboPooledDataSource connPool = new ComboPooledDataSource(); connPool .setJdbcUrl(PropertyReader.getSystemProperty(DB_URL)); connPool .setUser(PropertyReader.getSystemProperty(DB_USER)); connPool .setPassword(Decryption.getDecryptedPwd(DB_PASSWORD)); connPool .setMaxPoolSize(MAX_POOL_SIZE); connPool .setMaxIdleTime(MAX_IDLE_TIME); connPool .setMinPoolSize(MIN_POOL_SIZE); connPool .setMaxAdministrativeTaskTime(15); java.sql.Connection conn = connPool.getConnection(); oracle.sql.CLOB c = CLOB.createTemporary(conn, false, CLOB.DURATION_SESSION); Writer writer = c.setCharacterStream(0L); writer.write(String.valueOf(pNoListDelimited).toCharArray()); writer.flush(); writer.close(); ``` Exception stack trace ``` java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection at oracle.sql.CLOB.createTemporary(CLOB.java:676) at oracle.sql.CLOB.createTemporary(CLOB.java:640) …… ….. at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) ```