I have this class
package com.middleware.jdbc.j2ee.websphere;
public class WS50NativeJDBCExtractorImpl implements NativeJDBCExtractorInf {
private Class webSphere5ConnectionClass;
private Method webSphere5NativeConnectionMethod;
private Class webSphere5StatementClass;
private Method webSphere5NativeStatementMethod;
public WS50NativeJDBCExtractorImpl() throws Exception {
try {
this.webSphere5ConnectionClass = getClass().getClassLoader().loadClass("com.ibm.ws.rsadapter.jdbc.WSJdbcConnection");
Class jdbcAdapterUtilClass = getClass().getClassLoader().loadClass("com.ibm.ws.rsadapter.jdbc.WSJdbcUtil");
this.webSphere5NativeConnectionMethod = jdbcAdapterUtilClass.getMethod("getNativeConnection", new Class[] { this.webSphere5ConnectionClass });
this.webSphere5StatementClass = getClass().getClassLoader().loadClass("com.ibm.ws.rsadapter.jdbc.WSJdbcStatement");
this.webSphere5NativeStatementMethod = webSphere5StatementClass.getDeclaredMethod("getJDBCImplObject", null);
this.webSphere5NativeStatementMethod.setAccessible(true);
} catch (Exception ex) {
e.printStackTrace();
}
}
public Connection getConnection(Connection c) throws Exception {
if (this.webSphere5ConnectionClass != null && this.webSphere5ConnectionClass.isAssignableFrom(c.getClass())) {
try {
return (Connection) this.webSphere5NativeConnectionMethod.invoke(null, new Object[] { c });
} catch (Throwable e) {
e.printStackTrace();
}
} else {
return c;
}
}
private Object primGetStatement(Statement stmt) throws Exception {
if (this.webSphere5StatementClass != null && this.webSphere5StatementClass.isAssignableFrom(stmt.getClass())) {
try {
return this.webSphere5NativeStatementMethod.invoke(stmt, null);
} catch (Throwable e) {
e.printStackTrace();
}
} else {
return stmt;
}
}
public CallableStatement getCallableStatement(CallableStatement cs) throws Exception {
return (CallableStatement) primGetStatement(cs);
}}
I want to use WSCallHelper.jdbcCall as suggested in WAS 8 info center but I won't able to get it correct. I tried
Object st = WSCallHelper.jdbcCall(null, this.webSphere5StatementClass, "getJDBCImplObject", new Object[]{}, new Class[]{});
I'm getting NOT_A_JDBC_OBJECT error. When I didn't use the WSCallHelper, I'm getting
java.lang.ClassCastException: oracle.jdbc.driver.OracleCallableStatementWrapper incompatible with oracle.jdbc.OracleCallableStatement
I also tried to use
CallableStatement cStmt = getCallableStatement(call);
if(stmt.isWrapperFor(OracleCallableStatement.class)){
OracleCallableStatement ocs = (OracleCallableStatement) stmt;
}
(where call variable has SQL statement). It says that stmt is not wrapped.
I'm using the above class to connect to Oracle 9i database. Anyone know how to use WSCallHelper.jdbcCall for the code above? Thanks.