Index: src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java (revision 1436834) +++ src/main/java/org/apache/jackrabbit/core/nodetype/NodeTypeManagerImpl.java (working copy) @@ -126,6 +126,13 @@ } /** + * Disposes this node type manager. + */ + public void dispose() { + context.getNodeTypeRegistry().removeListener(this); + } + + /** * @return the root node definition */ public NodeDefinitionImpl getRootNodeDefinition() { Index: src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeManagerImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeManagerImpl.java (revision 1436834) +++ src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeManagerImpl.java (working copy) @@ -77,6 +77,13 @@ registry.addListener(this); } + /** + * Disposes this privilege manager + */ + public void dispose() { + registry.removeListener(this); + } + //---------------------------------------------------< PrivilegeManager >--- /** * @see PrivilegeManager#getRegisteredPrivileges() Index: src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistry.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistry.java (revision 1436834) +++ src/main/java/org/apache/jackrabbit/core/security/authorization/PrivilegeRegistry.java (working copy) @@ -665,6 +665,15 @@ listeners.put(listener,listener); } + /** + * Removes a privilege registration listener. + * + * @param listener + */ + public void removeListener(Listener listener) { + listeners.remove(listener); + } + //---------------------------------------------< privilege registration >--- /** * Register the specified custom privilege definitions. Index: src/main/java/org/apache/jackrabbit/core/session/SessionContext.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/session/SessionContext.java (revision 1436834) +++ src/main/java/org/apache/jackrabbit/core/session/SessionContext.java (working copy) @@ -88,7 +88,7 @@ /** * Privilege manager of this session. */ - private final PrivilegeManager privilegeManager; + private final PrivilegeManagerImpl privilegeManager; /** * The namespace registry exposed for this session context that includes @@ -246,7 +246,7 @@ * * @return the privilege manager. */ - public PrivilegeManager getPrivilegeManager() { + public PrivilegeManagerImpl getPrivilegeManager() { return privilegeManager; } Index: src/main/java/org/apache/jackrabbit/core/SessionImpl.java =================================================================== --- src/main/java/org/apache/jackrabbit/core/SessionImpl.java (revision 1436834) +++ src/main/java/org/apache/jackrabbit/core/SessionImpl.java (working copy) @@ -952,6 +952,8 @@ // notify listeners that session is about to be closed notifyLoggingOut(); + context.getPrivilegeManager().dispose(); + context.getNodeTypeManager().dispose(); // dispose session item state manager context.getItemStateManager().dispose(); // dispose item manager