[ http://issues.apache.org/jira/browse/JCR-120?page=all ]
     
Jukka Zitting closed JCR-120:
-----------------------------


> Jackrabbit fails to shutdown properly when tomcat is shutting down
> ------------------------------------------------------------------
>
>          Key: JCR-120
>          URL: http://issues.apache.org/jira/browse/JCR-120
>      Project: Jackrabbit
>         Type: Bug
>   Components: observation, core
>     Reporter: fabrizio giustina
>     Assignee: Jukka Zitting
>      Fix For: 1.0
>  Attachments: JCR-120.diff, shutdown1.png, shutdown2.png
>
> This is the same issue already discudded in 
> http://issues.apache.org/jira/browse/JCR-57
> The problem only occurs when Jackrabbit is deployed in the WEB-INF/lib 
> directory of a web application in Tomcat.
> During dispose() jackrabbit tries to instantiate a few objects from classes 
> which were not previously loaded by the webapp classloader, but tomcat 
> doesn't allow to load new classes while shutting down.
> This causes the repository not to be closed properly, and an annoying set of 
> stack traces are written to the log.
> It seems that there are only two classes which are loaded in this situation: 
> org.apache.jackrabbit.core.observation.EventListenerIteratorImpl and 
> org.apache.jackrabbit.core.fs.FileSystemPathUtil. This is the log from the 
> server standard output:
> org.apache.catalina.loader.WebappClassLoader loadClass
> INFO: Illegal access: this web application instance has been stopped already. 
>  Could not load 
> org.apache.jackrabbit.core.observation.EventListenerIteratorImpl.  The 
> eventual following stack trace is caused by an error thrown for debugging 
> purposes as well as to attempt to terminate the thread which caused the 
> illegal access, and has no functional impact.
> [repeaded more times at each shutdown]
> org.apache.catalina.loader.WebappClassLoader loadClass
> INFO: Illegal access: this web application instance has been stopped already. 
>  Could not load org.apache.jackrabbit.core.fs.FileSystemPathUtil.  The 
> eventual following stack trace is caused by an error thrown for debugging 
> purposes as well as to attempt to terminate the thread which caused the 
> illegal access, and has no functional impact.
> A quick fix is to force preloading of classes normally needed only during 
> shutdown, simply adding a static block to caller classes. The following patch 
> makes tomcat happy, causing classes to be loaded by the webapp classloaded 
> when still allowed  (probably not really elegant, but perfectly working...)
> Index: org/apache/jackrabbit/core/fs/FileSystemResource.java
> ===================================================================
> --- src\java\org\apache\jackrabbit\core\fs\FileSystemResource.java    
> (revision 169503)
> +++ src\java\org\apache\jackrabbit\core\fs\FileSystemResource.java    
> (working copy)
> @@ -30,6 +30,11 @@
>  
>      protected final String path;
>  
> +    static {
> +        // preload FileSystemPathUtil to prevent classloader issues during 
> shutdown
> +        FileSystemPathUtil.class.hashCode();
> +    }
> +
>      /**
>       * Creates a new <code>FileSystemResource</code>
>       *
> Index: org/apache/jackrabbit/core/observation/ObservationManagerImpl.java
> ===================================================================
> --- 
> src\java\org\apache\jackrabbit\core\observation\ObservationManagerImpl.java   
>     (revision 169503)
> +++ 
> src\java\org\apache\jackrabbit\core\observation\ObservationManagerImpl.java   
>     (working copy)
> @@ -54,6 +54,11 @@
>       */
>      private final ObservationManagerFactory obsMgrFactory;
>  
> +    static {
> +        // preload EventListenerIteratorImpl to prevent classloader issues 
> during shutdown
> +        EventListenerIteratorImpl.class.hashCode();
> +    }
> +
>      /**
>       * Creates an <code>ObservationManager</code> instance.
>       *

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to