[ http://issues.apache.org/jira/browse/JCR-57?page=history ] Marcel Reutegger closed JCR-57: -------------------------------
> 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
