Class MongoSessionDataStore

  • All Implemented Interfaces:
    org.eclipse.jetty.server.session.SessionDataMap, org.eclipse.jetty.server.session.SessionDataStore, org.eclipse.jetty.util.component.Container, org.eclipse.jetty.util.component.Destroyable, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.LifeCycle

    @ManagedObject
    public class MongoSessionDataStore
    extends NoSqlSessionDataStore
    MongoSessionDataStore The document model is an outer object that contains the elements:
    • "id" : session_id
    • "created" : create_time
    • "accessed": last_access_time
    • "maxIdle" : max_idle_time setting as session was created
    • "expiry" : time at which session should expire
    • "valid" : session_valid
    • "context" : a nested object containing 1 nested object per context for which the session id is in use
    Each of the nested objects inside the "context" element contains:
    • unique_context_name : nested object containing name:value pairs of the session attributes for that context
    • unique_context_name: vhost:contextpath, where no vhosts="0_0_0_0", root context = "", contextpath "/" replaced by "_"

    One of the name:value attribute pairs will always be the special attribute "__metadata__". The value is an object representing a version counter which is incremented every time the attributes change.

    For example:

     { "_id"       : ObjectId("52845534a40b66410f228f23"),
        "accessed" :  NumberLong("1384818548903"),
        "maxIdle"  : 1,
        "context"  : { "0_0_0_0:_testA" : { "A"            : "A",
                                         "__metadata__" : { "version" : NumberLong(2) }
                                       },
                       "0_0_0_0:_testB" : { "B"            : "B",
                                         "__metadata__" : { "version" : NumberLong(1) }
                                       }
                     },
        "created"  : NumberLong("1384818548903"),
        "expiry"   : NumberLong("1384818549903"),
        "id"       : "w01ijx2vnalgv1sqrpjwuirprp7",
        "valid"    : true
     }
     

    In MongoDB, the nesting level is indicated by "." separators for the key name. Thus to interact with session fields, the key is composed of: "context".unique_context_name.field_name Eg "context"."0_0_0_0:_testA"."lastSaved"

    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container

        org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.Listener
      • Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle

        org.eclipse.jetty.util.component.LifeCycle.Listener
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String __ACCESSED
      Last access time of session
      static java.lang.String __ATTRIBUTES  
      static java.lang.String __CONTEXT
      Name of nested document field containing 1 sub document per context for which the session id is in use
      static java.lang.String __CREATED
      Time of session creation
      static java.lang.String __EXPIRY
      Time this session will expire, based on last access time and maxIdle
      static java.lang.String __ID
      Session id
      static java.lang.String __LAST_ACCESSED  
      static java.lang.String __LASTNODE  
      static java.lang.String __LASTSAVED  
      static java.lang.String __MAX_IDLE
      The max idle time of a session (smallest value across all contexts which has a session with the same id)
      static java.lang.String __METADATA
      Special attribute for a session that is context-specific
      static java.lang.String __VALID
      Whether or not session is valid
      static java.lang.String __VERSION
      Special attribute per session per context, incremented each time attributes are modified
      • Fields inherited from class org.eclipse.jetty.server.session.AbstractSessionDataStore

        _context, _gracePeriodSec, _lastExpiryCheckTime, _savePeriodSec
      • Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        FAILED, STARTED, STARTING, STOPPED, STOPPING
      • Fields inherited from interface org.eclipse.jetty.util.component.Dumpable

        KEY
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean delete​(java.lang.String id)  
      java.util.Set<java.lang.String> doGetExpired​(java.util.Set<java.lang.String> candidates)  
      org.eclipse.jetty.server.session.SessionData doLoad​(java.lang.String id)  
      void doStore​(java.lang.String id, org.eclipse.jetty.server.session.SessionData data, long lastSaveTime)  
      protected void ensureIndexes()  
      boolean exists​(java.lang.String id)  
      com.mongodb.DBCollection getDBCollection()  
      void initialize​(org.eclipse.jetty.server.session.SessionContext context)  
      boolean isPassivating()  
      void setDBCollection​(com.mongodb.DBCollection collection)  
      java.lang.String toString()  
      • Methods inherited from class org.eclipse.jetty.server.session.AbstractSessionDataStore

        checkStarted, doStart, getExpired, getGracePeriodSec, getSavePeriodSec, load, setGracePeriodSec, setSavePeriodSec, store
      • Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle

        addBean, addBean, addEventListener, addManaged, contains, destroy, doStop, dump, dump, dump, dumpObjects, dumpStdErr, getBean, getBeans, getBeans, getContainedBeans, getContainedBeans, isAuto, isManaged, isUnmanaged, manage, removeBean, removeBeans, removeEventListener, setBeans, start, stop, unmanage, updateBean, updateBean, updateBeans
      • Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle

        getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stop
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface org.eclipse.jetty.util.component.Container

        getCachedBeans, getEventListeners
      • Methods inherited from interface org.eclipse.jetty.util.component.Dumpable

        dumpSelf
      • Methods inherited from interface org.eclipse.jetty.util.component.LifeCycle

        addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
    • Field Detail

      • __METADATA

        public static final java.lang.String __METADATA
        Special attribute for a session that is context-specific
        See Also:
        Constant Field Values
      • __CONTEXT

        public static final java.lang.String __CONTEXT
        Name of nested document field containing 1 sub document per context for which the session id is in use
        See Also:
        Constant Field Values
      • __VERSION

        public static final java.lang.String __VERSION
        Special attribute per session per context, incremented each time attributes are modified
        See Also:
        Constant Field Values
      • __ACCESSED

        public static final java.lang.String __ACCESSED
        Last access time of session
        See Also:
        Constant Field Values
      • __EXPIRY

        public static final java.lang.String __EXPIRY
        Time this session will expire, based on last access time and maxIdle
        See Also:
        Constant Field Values
      • __MAX_IDLE

        public static final java.lang.String __MAX_IDLE
        The max idle time of a session (smallest value across all contexts which has a session with the same id)
        See Also:
        Constant Field Values
      • __CREATED

        public static final java.lang.String __CREATED
        Time of session creation
        See Also:
        Constant Field Values
      • __VALID

        public static final java.lang.String __VALID
        Whether or not session is valid
        See Also:
        Constant Field Values
    • Constructor Detail

      • MongoSessionDataStore

        public MongoSessionDataStore()
    • Method Detail

      • setDBCollection

        public void setDBCollection​(com.mongodb.DBCollection collection)
      • getDBCollection

        @ManagedAttribute(value="DBCollection",
                          readonly=true)
        public com.mongodb.DBCollection getDBCollection()
      • doLoad

        public org.eclipse.jetty.server.session.SessionData doLoad​(java.lang.String id)
                                                            throws java.lang.Exception
        Specified by:
        doLoad in class org.eclipse.jetty.server.session.AbstractSessionDataStore
        Throws:
        java.lang.Exception
      • delete

        public boolean delete​(java.lang.String id)
                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • exists

        public boolean exists​(java.lang.String id)
                       throws java.lang.Exception
        Throws:
        java.lang.Exception
      • doGetExpired

        public java.util.Set<java.lang.String> doGetExpired​(java.util.Set<java.lang.String> candidates)
        Specified by:
        doGetExpired in class org.eclipse.jetty.server.session.AbstractSessionDataStore
      • initialize

        public void initialize​(org.eclipse.jetty.server.session.SessionContext context)
                        throws java.lang.Exception
        Specified by:
        initialize in interface org.eclipse.jetty.server.session.SessionDataMap
        Overrides:
        initialize in class org.eclipse.jetty.server.session.AbstractSessionDataStore
        Throws:
        java.lang.Exception
      • doStore

        public void doStore​(java.lang.String id,
                            org.eclipse.jetty.server.session.SessionData data,
                            long lastSaveTime)
                     throws java.lang.Exception
        Specified by:
        doStore in class org.eclipse.jetty.server.session.AbstractSessionDataStore
        Throws:
        java.lang.Exception
      • ensureIndexes

        protected void ensureIndexes()
                              throws com.mongodb.MongoException
        Throws:
        com.mongodb.MongoException
      • isPassivating

        @ManagedAttribute(value="does store serialize sessions",
                          readonly=true)
        public boolean isPassivating()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class org.eclipse.jetty.server.session.AbstractSessionDataStore