Exception:com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to oracle.jdbc.OracleConnection

[esoaisapp] ERROR 2012-08-17 09:54:50,327 method:cn.flyingsoft.oais.webapp.action.ActionExceptionHandler.logException(ActionExceptionHandler.java:149)
java.lang.ClassCastException: com.mchange.v2.c3p0.impl.NewProxyConnection cannot be cast to oracle.jdbc.OracleConnection
at oracle.sql.CLOB.createTemporary(CLOB.java:676)
at oracle.sql.CLOB.createTemporary(CLOB.java:640)
at cn.flyingsoft.oais.driver.operate.NewEventItemManager.saveEventItem(NewEventItemManager.java:373)
at cn.flyingsoft.oais.webapp.action.NewEventItemAction.saveEventItem(NewEventItemAction.java:110)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)

解决方法:

方法1:

//将NewProxyConnection转换为OracleConnection
					conn = session.getConnection();//从C3p0获取的连接
					pstm = conn.preparedStatement();
					//NewProxyConnection转换为OracleConnection
					 C3P0NativeJdbcExtractor cp30NativeJdbcExtractor = new C3P0NativeJdbcExtractor();
					 OracleConnection connection = (OracleConnection) cp30NativeJdbcExtractor.getNativeConnection(pstm.getConnection());

					 itemFlow = oracle.sql.CLOB.createTemporary(connection, false, oracle.sql.CLOB.DURATION_SESSION);
//					 itemFlow =  OracleUtils.createTemporaryCLOB(pstm.getConnection(),false,oracle.sql.CLOB.DURATION_CALL);

方法2:

修改配置文件,添加下面的代码:(貌似没作用???)

	
	
		
			
		
	 

		
...

你可能感兴趣的:(java)