Hi Thomas,
We tried to use the BundleDbPersistenceManager with JNDI (as you
suggested), but we got a "java.lang.UnsupportedOperationException" from
the DataSource Object. We are using the
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory, but the
BasicDataSource or PoolingDataSource do not support the method
getConnection (String, String), as it is used in:
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionFactory
57: // JNDI context
Context context = (Context) d.newInstance();
DataSource ds = (DataSource) context.lookup(url);
return ds.getConnection(user, password);
It seems that we have to use another factory, but the only one that
appeared to be fitting was the
org.apache.commons.dbcp.datasources.SharedPoolDataSourceFactory for
which we got a null back from the lookup-method of the InitialContext
class, and ran into a NullPointerException.
Also: Is there a similar class to BundleDbPersistenceManager to replace
the org.apache.jackrabbit.core.fs.db.JNDIDatabaseFileSystem, as we are
having the same problems according the connection loss with this class,
too.
Best regards,
Matthias Neubauer
PS: Here is the Stacktrace:
javax.jcr.RepositoryException: Cannot instantiate persistence manager
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
: Not supported by BasicDataSource: Not supported by BasicDataSource
at
org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(Repos
itoryImpl.java:1163)
at
org.apache.jackrabbit.core.RepositoryImpl.createVersionManager(Repositor
yImpl.java:383)
at
org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:293
)
at
org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:550
)
at
org.apache.jackrabbit.core.jndi.BindableRepository.createRepository(Bind
ableRepository.java:174)
at
org.apache.jackrabbit.core.jndi.BindableRepository.init(BindableReposito
ry.java:138)
at
org.apache.jackrabbit.core.jndi.BindableRepository.create(BindableReposi
tory.java:125)
at
org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.createInstance
(BindableRepositoryFactory.java:59)
at
org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.getObjectInsta
nce(BindableRepositoryFactory.java:81)
at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFact
ory.java:129)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown
Source)
at
org.apache.naming.NamingContext.lookup(NamingContext.java:791)
at
org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:155)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:160)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:125)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEve
nt(GlobalResourcesLifecycleListener.java:97)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSu
pport.java:119)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2306)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
Caused by: java.lang.UnsupportedOperationException: Not supported by
BasicDataSource
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.ja
va:899)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionFactory.get
Connection(ConnectionFactory.java:60)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
ager.setupConnection(ConnectionRecoveryManager.java:328)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
ager.<init>(ConnectionRecoveryManager.java:137)
at
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
.init(BundleDbPersistenceManager.java:558)
at
org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(Repos
itoryImpl.java:1159)
... 25 more
java.lang.UnsupportedOperationException: Not supported by
BasicDataSource
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.ja
va:899)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionFactory.get
Connection(ConnectionFactory.java:60)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
ager.setupConnection(ConnectionRecoveryManager.java:328)
at
org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
ager.<init>(ConnectionRecoveryManager.java:137)
at
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
.init(BundleDbPersistenceManager.java:558)
at
org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(Repos
itoryImpl.java:1159)
at
org.apache.jackrabbit.core.RepositoryImpl.createVersionManager(Repositor
yImpl.java:383)
at
org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:293
)
at
org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:550
)
at
org.apache.jackrabbit.core.jndi.BindableRepository.createRepository(Bind
ableRepository.java:174)
at
org.apache.jackrabbit.core.jndi.BindableRepository.init(BindableReposito
ry.java:138)
at
org.apache.jackrabbit.core.jndi.BindableRepository.create(BindableReposi
tory.java:125)
at
org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.createInstance
(BindableRepositoryFactory.java:59)
at
org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.getObjectInsta
nce(BindableRepositoryFactory.java:81)
at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFact
ory.java:129)
at javax.naming.spi.NamingManager.getObjectInstance(Unknown
Source)
at
org.apache.naming.NamingContext.lookup(NamingContext.java:791)
at
org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:155)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:160)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:125)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEve
nt(GlobalResourcesLifecycleListener.java:97)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSu
pport.java:119)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2306)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
10.01.2008 14:29:53
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener createMBeans
SCHWERWIEGEND: Exception processing Global JNDI Resources
javax.naming.NamingException: Cannot instantiate persistence manager
org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
: Not supported by BasicDataSource
at
org.apache.naming.NamingContext.lookup(NamingContext.java:803)
at
org.apache.naming.NamingContext.lookup(NamingContext.java:151)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:155)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:160)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans
(GlobalResourcesLifecycleListener.java:125)
at
org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEve
nt(GlobalResourcesLifecycleListener.java:97)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSu
pport.java:119)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2306)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
at
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)
>Hi,
>
>The BundleDbPersistenceManager also supports auto-reconnect.
>
>With Jackrabbit 1.4.0 RC-1, the connection can be created using a JNDI
>Data Source as well. To do that, the driver class name must reference
>a javax.naming.Context class (for example
>javax.naming.InitialContext), and the URL must be the JNDI URL (for
>example java:comp/env/jdbc/Test).
>
>Regards,
>Thomas