[ http://issues.apache.org/jira/browse/JCR-57?page=history ]
Marcel Reutegger resolved JCR-57:
---------------------------------
Resolution: Fixed
Fixed as suggested by Felix.
At revision: 156640
> WorkspaceImpl.dispose() might cause ClassNotFoundException
> ----------------------------------------------------------
>
> Key: JCR-57
> URL: http://issues.apache.org/jira/browse/JCR-57
> Project: Jackrabbit
> Type: Bug
> Environment: Jackrabbit SVN 156540
> Reporter: Felix Meschberger
> Assignee: Marcel Reutegger
>
> Wenn using Jackrabbit in an environment, where ClassLoaders may get
> inactivated in the sense, the loading new classes is not possible anymore,
> shutting down the repository may result in a ClassNotFoundException during
> WorkspaceImpl.dispose().
> Reason for this is, that in the dispose() method, the ObservationManager is
> asked for all registered event listeners for them to be removed from the
> ObservationManager one-by-one. Asking for the listeners results in a new
> EventListenerIteratorImpl object being created.
> If now, this class has never been used during the live time of the
> repository, this would cause a ClassNotFoundException because the class
> loader is not laoding classes anymore in the specific environment.
> The specific environment is Eclipse, where one plugin is managing different
> Repository instances provided by separate plugins. When now the Jackrabbit
> provider plugin has already been stopped while the managing plugin tries to
> shutdown the Jackrabbit repository, the EventListenerIteratorImpl class
> cannot be loaded anymore and disposing the WorkspaceImpl in a controlled way
> fails.
> I suggest adding an ObservationManagerImpl.dispose() method, which is called
> by the WorkspaceImpl like :
> WorkspaceImpl.dispose() {
> if (obsMgr != null) {
> obsMgr.dispose();
> obsMgr = null;
> }
> }
> As a side effect of not calling getObservationManager[Impl]() the observation
> manager would also not be created if not existing yet.
> As a side effect to having the dispose method is, that the
> ObservationManagerImpl class could also do other cleanup work in addition to
> clearing the listener lists.
--
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
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira