jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Schmidt <cschm...@prospricing.com>
Subject Configuration question with DataSource and TransientRepository
Date Mon, 03 Jan 2011 22:18:09 GMT
  I have an application that can start a regular (RepositoryImpl) repository or a transient
repository.  I have upgraded to JackRabbit 2.1.2 and have noticed a problem when using the
transient repository.  The filesystem configuration is using a DataSource to configure the
database through JNDI.  The first session used works fine.  The filesystem initializes and
a ConnectionFactory is injected into the instance.  Once the session closes, the connection
factory is shutdown and its internal field 'closed' is set to true.

  On the next call to the repository, the transient repository creates a new instance of the
filesystem, which gets the same connection factory instance that was previously created injected
into it.  The factory has already shutdown, so as soon as the getDataSource() method is called
the sanityCheck() method within the ConnectionFactory throws an IllegalStateException saying
that the factory has already been closed.

  I looked through JIRA but didn't see anything similar to the problem I'm encountering. 
Is it expected that the ConnectionFactory will be cached after the repository is shut down?
 I can restructure the code so the transient repository is never used, but I'd like to verify
whether I have a configuration issue or uncovered an actual defect first.  The resulting stacktrace

2011-01-03 15:37:47,495 [Thread-3] ERROR - failed to start Repository: File system initialization
javax.jcr.RepositoryException: File system initialization failure.
                at org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1064)
                at org.apache.jackrabbit.core.config.RepositoryConfig.getFileSystem(RepositoryConfig.java:892)
                at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:311)
                at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:673)
                at org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:179)
                at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:279)
                at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:375)
Caused by: org.apache.jackrabbit.core.fs.FileSystemException: failed to initialize file system
                at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:210)
                at org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1061)
                ... 19 more
Caused by: java.lang.IllegalStateException: this factory has already been closed
                at org.apache.jackrabbit.core.util.db.ConnectionFactory.sanityCheck(ConnectionFactory.java:213)
                at org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataBaseType(ConnectionFactory.java:134)
                at org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem.java:228)
                at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190)


  Chris Schmidt

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message