Class MongoSessionDataStore

  • All Implemented Interfaces:
    SessionDataMap, SessionDataStore, org.eclipse.jetty.util.component.Container, org.eclipse.jetty.util.component.Destroyable, org.eclipse.jetty.util.component.Dumpable, org.eclipse.jetty.util.component.Dumpable.DumpableContainer, 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
      • 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.Dumpable

        org.eclipse.jetty.util.component.Dumpable.DumpableContainer
      • 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.util.component.AbstractLifeCycle

        FAILED, RUNNING, 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)  
      SessionData doLoad​(java.lang.String id)  
      void doStore​(java.lang.String id, SessionData data, long lastSaveTime)  
      protected void ensureIndexes()  
      boolean exists​(java.lang.String id)  
      com.mongodb.DBCollection getDBCollection()  
      void initialize​(SessionContext context)  
      boolean isPassivating()  
      void setDBCollection​(com.mongodb.DBCollection collection)  
      java.lang.String toString()  
      • Methods inherited from class org.eclipse.jetty.util.component.ContainerLifeCycle

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

        addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, 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.Dumpable

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

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

        addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, 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()
      • 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
      • ensureIndexes

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

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