1.6.3.2. Reusing SessionProvider

As shown above, creating the SessionProvider involves multiple steps and you may not want to repeat them each time you need to get a JCR session. In order to avoid all this plumbing code, we provide the SessionProviderService whose goal is to help you to get a SessionProvider object.

The org.exoplatform.services.jcr.ext.app.SessionProviderService interface is defined as follows:

public interface SessionProviderService {

  void setSessionProvider(Object key, SessionProvider sessionProvider);
  SessionProvider getSessionProvider(Object key);
  void removeSessionProvider(Object key);
}

Using this service is pretty straightforward, the main contract of an implemented component is getting a SessionProvider by key. eXo provides two implementations :

ImplementationDescriptionTypical Use
org.exoplatform.services.jcr.ext.app.MapStoredSessionProviderServiceper-user style : keeps objects in a Mapper-user. The usual practice uses a user's name or Credentials as a key.
org.exoplatform.services.jcr.ext.app.ThreadLocalSessionProviderServiceper-request style : keeps a single SessionProvider in a static ThreadLocal variableAlways use null for the key.

For any implementation, your code should follow the following sequence :

Copyright ©2012. All rights reserved. eXo Platform SAS