My objective is to be able to start and stop Jackrabbit instance regardless
of number of times.
I m able to successfully stop a Jackrabbit instance through the following
code.
log.info("Unbind remote repository : {}.", getRemoteRepositoryName());
//$NON-NLS-1$
UnicastRemoteObject.unexportObject(this.remoteRepository, true);
getRmiRegistry().unbind(getRemoteRepositoryName());
if
(getSessionFactory().getRepository().getDescriptorKeys().length>0) {
if (getSessionFactory().getRepository() instanceof
JackrabbitRepository) {
log.info("HOOK JCR : shuttown JackRabbit Repository...");
((JackrabbitRepository)
getSessionFactory().getRepository()).shutdown();
}
}
In the mean time starting Jackrabbit repository through the following code
generates IllegalStateException:
RepositoryConfig config = RepositoryConfig.create(repo.getConfig());
RepositoryImpl.create(config);
Caused by: java.lang.IllegalStateException: this factory has already been
closed
at
org.apache.jackrabbit.core.util.db.ConnectionFactory.sanityCheck(ConnectionFactory.java:215)
at
org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataSource(ConnectionFactory.java:164)
at
org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem.java:226)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:187)
A boolean value "closed" is set to true as soon as the repository is shut
down. When started later, it fails to reinitialize correctly.
private void sanityCheck() {
if (closed) {
throw new IllegalStateException("this factory has already been
closed");
}
}
--
View this message in context:
http://jackrabbit.510166.n4.nabble.com/sanityCheck-this-factory-has-already-been-closed-tp4657857.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.