Class HazelcastSessionDataStore

All Implemented Interfaces:
SessionDataMap, SessionDataStore, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle

@ManagedObject public class HazelcastSessionDataStore extends AbstractSessionDataStore implements SessionDataStore
Session data stored in Hazelcast
  • Constructor Details

    • HazelcastSessionDataStore

      public HazelcastSessionDataStore()
  • Method Details

    • setUseQueries

      public void setUseQueries(boolean useQueries)
      Control whether or not to execute queries to find expired sessions - ie sessions for this context that are no longer actively referenced by any jetty instance and should be expired. If you use this feature, be aware that if your session stores any attributes that use classes from within your webapp, or from within jetty, you will need to make sure those classes are available to all of your hazelcast instances, whether embedded or remote.
      Parameters:
      useQueries - true means unreferenced sessions will be actively sought and expired. False means that they will remain in hazelcast until some other mechanism removes them.
    • isUseQueries

      public boolean isUseQueries()
    • doLoad

      public SessionData doLoad(String id) throws Exception
      Description copied from class: AbstractSessionDataStore
      Load the session from persistent store.
      Specified by:
      doLoad in class AbstractSessionDataStore
      Parameters:
      id - the id of the session to load
      Returns:
      the re-inflated session
      Throws:
      Exception - if unable to load the session
    • delete

      public boolean delete(String id) throws Exception
      Description copied from interface: SessionDataMap
      Delete session data
      Specified by:
      delete in interface SessionDataMap
      Parameters:
      id - identity of session to delete
      Returns:
      true if the session was deleted
      Throws:
      Exception - if unable to delete session data
    • getSessionDataMap

      public com.hazelcast.map.IMap<String,SessionData> getSessionDataMap()
    • setSessionDataMap

      public void setSessionDataMap(com.hazelcast.map.IMap<String,SessionData> sessionDataMap)
    • initialize

      public void initialize(SessionContext context) throws Exception
      Description copied from interface: SessionDataMap
      Initialize this data map for the given context. A SessionDataMap can only be used by one context(/session manager).
      Specified by:
      initialize in interface SessionDataMap
      Overrides:
      initialize in class AbstractSessionDataStore
      Parameters:
      context - context associated
      Throws:
      Exception - if unable to initialize the
    • doStore

      public void doStore(String id, SessionData data, long lastSaveTime) throws Exception
      Description copied from class: AbstractSessionDataStore
      Store the session data persistently.
      Specified by:
      doStore in class AbstractSessionDataStore
      Parameters:
      id - identity of session to store
      data - info of the session
      lastSaveTime - time of previous save or 0 if never saved
      Throws:
      Exception - if unable to store data
    • isPassivating

      public boolean isPassivating()
      Description copied from interface: SessionDataStore
      True if this type of datastore will passivate session objects
      Specified by:
      isPassivating in interface SessionDataStore
      Returns:
      true if this store can passivate sessions, false otherwise
    • doCleanOrphans

      public void doCleanOrphans(long timeLimit)
      Description copied from class: AbstractSessionDataStore
      Implemented by subclasses to delete sessions for other contexts that expired at or before the timeLimit. These are 'orphaned' sessions that are no longer being actively managed by any node. These are explicitly sessions that do NOT belong to this context (other mechanisms such as doGetExpired take care of those). As they don't belong to this context, they cannot be loaded by us. This is called only periodically to avoid placing excessive load on the store.
      Specified by:
      doCleanOrphans in class AbstractSessionDataStore
      Parameters:
      timeLimit - the upper limit of the expiry time to check in msec
    • doGetExpired

      public Set<String> doGetExpired(long time)
      Description copied from class: AbstractSessionDataStore
      Implemented by subclasses to find sessions for this context in the store that expired at or before the time limit and thus not being actively managed by any node. This method is only called periodically (the period is configurable) to avoid putting too much load on the store.
      Specified by:
      doGetExpired in class AbstractSessionDataStore
      Parameters:
      time - the upper limit of expiry times to check. Sessions expired at or before this timestamp will match.
      Returns:
      the empty set if there are no sessions expired as at the time, or otherwise a set of session ids.
    • doCheckExpired

      public Set<String> doCheckExpired(Set<String> candidates, long time)
      Description copied from class: AbstractSessionDataStore
      Implemented by subclasses to resolve which sessions in this context that are being managed by this node that should be expired.
      Specified by:
      doCheckExpired in class AbstractSessionDataStore
      Parameters:
      candidates - the ids of sessions the SessionCache thinks has expired
      time - the time at which to check for expiry
      Returns:
      the reconciled set of session ids that have been checked in the store
    • doExists

      public boolean doExists(String id) throws Exception
      Description copied from class: AbstractSessionDataStore
      Check if a session for the given id exists.
      Specified by:
      doExists in class AbstractSessionDataStore
      Parameters:
      id - the session id to check
      Returns:
      true if the session exists in the persistent store, false otherwise
      Throws:
      Exception
    • getCacheKey

      public String getCacheKey(String id)