Hi all,
I am almost facing the same problem Chris wrote about.
I am using an Oracle9FileSystem and I run into this exception:
Caused by: java.io.IOException: failed to unwrap connection of class
org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper,
expected it to be a org.apache.commons.dbcp.DelegatingConnection
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem$2.close(DatabaseFileSystem.java:757)
at
org.apache.jackrabbit.core.NamespaceRegistryImpl.store(NamespaceRegistryImpl.java:253)
... 75 more
The point is that Tomcat - my web container - is using a different class
(org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper) to
wrap the real JDBC connection, causing the exception the be thrown.
Am I missing something?
Thanks,
Emiliano.
On Mar 7, 2011, at 2:54 PM, Chris Schmidt wrote:
> 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