There is a method in the org.apache.jackrabbit.core.util.db.ConnectionFactory
class that assumes that a Connection instance will be a wrapped/delegate
connection from DBCP. We are providing a pooled datasource to JackRabbit
through JNDI and the Connection being sent to this method is not a wrapped
instance (it's a regular Oracle Connection). I looked through the history and
the original connection pooling issue, but don't see a reason why there is a
need for a hard failure on line 206:
public static Connection unwrap(Connection con) throws SQLException {
if (con instanceof DelegatingConnection) {
return ((DelegatingConnection)con).getInnermostDelegate();
} else {
throw new SQLException("failed to unwrap connection of class " +
con.getClass().getName() +
", expected it to be a " +
DelegatingConnection.class.getName());
}
}
If there are no objections, can this class be modified to return the passed
in Connection if it isn't wrapped? I've changed the code locally and it allows
me to work with an Oracle 9i installation where before it failed with the
SQLException being thrown above. I can open an issue and provide the patch for
the change.
Thanks,
Chris Schmidt