java.lang.ClassCastException:com.mchange.v2.c3p0.impl.NewProxyConnection

Rav*_*dra 5 sql database oracle jdbc

我得到以下内容

java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection
Run Code Online (Sandbox Code Playgroud)

当以下代码执行时.你能帮我解决一下吗?

            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();
Run Code Online (Sandbox Code Playgroud)

异常堆栈跟踪

            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)
Run Code Online (Sandbox Code Playgroud)

Ste*_*man 5

您正在使用特定于Oracle的API,期望您的Connection成为特定的Oracle Connection类.但是您正在使用的Connection是c3p0代理连接,而不是Oracle Connection类.

如果你想使用特定于Oracle的api,你有几个选择:

  1. 您可以使用c3p0的原始连接操作,请参阅http://www.mchange.com/projects/c3p0/index.html#raw_connection_ops以获取您要查找的精确示例;
  2. c3p0实际上附带了一个执行此操作的Oracle jar文件.尽管如此,它很少使用和陈旧,所以是一粒盐;
  3. 您可以升级到c3p0-0.9.5预发布版本,该版本支持完整的JDBC4 api,并使用展开操作来解压缩原始Oracle Connection.

祝好运!