You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2005/12/14 09:13:28 UTC
svn commit: r356747 -
/incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java
Author: mreutegg
Date: Wed Dec 14 00:13:24 2005
New Revision: 356747
URL: http://svn.apache.org/viewcvs?rev=356747&view=rev
Log:
Remove shutdown hook when repository is shut down.
See: http://thread.gmane.org/gmane.comp.apache.jackrabbit.devel/4821
Modified:
incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java
Modified: incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java
URL: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java?rev=356747&r1=356746&r2=356747&view=diff
==============================================================================
--- incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java (original)
+++ incubator/jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/core/jndi/BindableRepository.java Wed Dec 14 00:13:24 2005
@@ -55,7 +55,7 @@
* <p>
* A JVM shutdown hook is used to make sure that the initialized
* repository is properly closed when the JVM shuts down. The
- * {@link RegistryHelper#unregisterRepository(Context, String)}
+ * {@link RegistryHelper#unregisterRepository(javax.naming.Context, String)}
* method should be used to explicitly close the repository if
* needed.
*/
@@ -83,6 +83,12 @@
private transient Repository delegatee;
/**
+ * Thread that is registered as shutdown hook after {@link #init} has been
+ * called.
+ */
+ private transient Thread hook;
+
+ /**
* Creates a BindableRepository instance with the given configuration
* information, but does not create the underlying repository instance.
*
@@ -122,11 +128,13 @@
RepositoryConfig config =
RepositoryConfig.create(configFilePath, repHomeDir);
delegatee = RepositoryImpl.create(config);
- Runtime.getRuntime().addShutdownHook(new Thread() {
+ hook = new Thread() {
public void run() {
shutdown();
}
- });
+ };
+
+ Runtime.getRuntime().addShutdownHook(hook);
}
//-----------------------------------------------------------< Repository >
@@ -246,6 +254,11 @@
* Delegated to the underlying repository instance.
*/
void shutdown() {
- ((RepositoryImpl) delegatee).shutdown() ;
+ ((RepositoryImpl) delegatee).shutdown();
+ try {
+ Runtime.getRuntime().removeShutdownHook(hook);
+ } catch (IllegalStateException e) {
+ // ignore. exception is thrown when hook itself calls shutdown
+ }
}
}