class JcrSessionFactory implements InitializingBean, DisposableBean, SessionFactory {

    protected Session addListeners(Session session) throws RepositoryException {
        if (eventListeners != null && eventListeners.length > 0) {
            Workspace ws = session.getWorkspace();
            ObservationManager manager = ws.getObservationManager();
            if (LOG.isDebugEnabled())
                LOG.debug("adding listeners " + Arrays.asList(eventListeners).toString() + " for session " + session);

            for (int i = 0; i < eventListeners.length; i++) {
                manager.addEventListener(eventListeners[i].getListener(), eventListeners[i].getEventTypes(), eventListeners[i].getAbsPath(),
                        eventListeners[i].isDeep(), eventListeners[i].getUuid(), eventListeners[i].getNodeTypeName(), eventListeners[i].isNoLocal());
            }
        }
        return session;
    }

    public  JcrSessionFactory(Repository repository, String workspaceName, Credentials credentials);
    public  JcrSessionFactory(Repository repository, String workspaceName, Credentials credentials, SessionHolderProviderManager sessionHolderProviderManager);
    public  JcrSessionFactory();

}