Hi,
Environment:
+ OC4J 10.1.3.2.0
+ OJDBC 10g
+ ibatis (2.2.0/2.1.0)
+ with and without logging
Consider the following Java/DAO code:
public class JdbcCallExecutorDAO extends JdbcDaoTemplate implements
ICallExecutor {
....
OracleCallableStatement ocstmt = null;
String returnValue = null;
try {
Connection c = getConnection();
System.err.println("Connection retrieved from iBatis DAO= "
+ c);
ocstmt = (OracleCallableStatement)
c.prepareCall(VALUECALL); /= ERRORLINE
System.err.println("CallableStatement retrieved from iBatis
DAO= "+ ocstmt);
ocstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
ocstmt.setString(2, name);
ocstmt.execute();
....
Without log4j/commons-logging enabled this code work without a problem,
however
when I enable log4j/commons-logging a ClassCastException occurs at //=
ERRORLINE
with a message like:
java.lang.ClassCastException: $Proxy14
.....
When I remove the (OracleCallableStatement) and use plain
CallableStatement assignment,
it works again. I've had a look at "PreparedStatementLogProxy" and
particularly this part:
...
public static PreparedStatement newInstance(PreparedStatement stmt,
String sql) {
InvocationHandler handler = new PreparedStatementLogProxy(stmt, sql);
ClassLoader cl = PreparedStatement.class.getClassLoader();
return (PreparedStatement) Proxy.newProxyInstance(cl, new
Class[]{PreparedStatement.class, CallableStatement.class}, handler);
}
...
I'm wondering whether this is correct. Basically I expect my behavior to
be the same with or
without logging.
Thank you,
-J.
--
Cumquat Information Technology
De Dreef 19
3706 BR Zeist
T +31 (0)30 - 6940490
F +31 (0)30 - 6940499
W http://www.cumquat.nl
E [EMAIL PROTECTED]
M +31 6 51 169 556
B http://www.cumquat.nl/technology_atom10.xml