Class MongoSessionDataStore

java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.session.AbstractSessionDataStore
org.eclipse.jetty.nosql.NoSqlSessionDataStore
org.eclipse.jetty.nosql.mongodb.MongoSessionDataStore
All Implemented Interfaces:
org.eclipse.jetty.session.SessionDataMap, org.eclipse.jetty.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.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.nosql.NoSqlSessionDataStore

    NoSqlSessionDataStore.NoSqlSessionData

    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.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 final String
    Last access time of session
    static final String
     
    static final String
    Name of nested document field containing 1 sub document per context for which the session id is in use
    static final String
    Time of session creation
    static final String
    Time this session will expire, based on last access time and maxIdle
    static final String
    Session id
    static final String
     
    static final String
     
    static final String
     
    static final String
    The max idle time of a session (smallest value across all contexts which has a session with the same id)
    static final String
    Special attribute for a session that is context-specific
    static final String
    Whether or not session is valid
    static final String
    Special attribute per session per context, incremented each time attributes are modified

    Fields inherited from class org.eclipse.jetty.session.AbstractSessionDataStore

    _context, _gracePeriodSec, _lastExpiryCheckTime, _lastOrphanSweepTime, _savePeriodSec, DEFAULT_GRACE_PERIOD_SEC, DEFAULT_SAVE_PERIOD_SEC

    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
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    boolean
     
    doCheckExpired(Set<String> candidates, long time)
     
    void
    doCleanOrphans(long timeLimit)
     
    boolean
     
    doGetExpired(long timeLimit)
     
    org.eclipse.jetty.session.SessionData
     
    void
    doStore(String id, org.eclipse.jetty.session.SessionData data, long lastSaveTime)
     
    protected void
     
    com.mongodb.DBCollection
     
    void
    initialize(org.eclipse.jetty.session.SessionContext context)
     
    boolean
     
    void
    setDBCollection(com.mongodb.DBCollection collection)
     
     

    Methods inherited from class org.eclipse.jetty.nosql.NoSqlSessionDataStore

    newSessionData

    Methods inherited from class org.eclipse.jetty.session.AbstractSessionDataStore

    checkStarted, cleanOrphans, doStart, exists, 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, 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.Dumpable.DumpableContainer

    isDumpable

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

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

  • Constructor Details

    • MongoSessionDataStore

      public MongoSessionDataStore()
  • Method Details

    • setDBCollection

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

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

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

      public boolean delete(String id) throws Exception
      Throws:
      Exception
    • doExists

      public boolean doExists(String id) throws Exception
      Specified by:
      doExists in class org.eclipse.jetty.session.AbstractSessionDataStore
      Throws:
      Exception
    • doCheckExpired

      public Set<String> doCheckExpired(Set<String> candidates, long time)
      Specified by:
      doCheckExpired in class org.eclipse.jetty.session.AbstractSessionDataStore
    • doGetExpired

      public Set<String> doGetExpired(long timeLimit)
      Specified by:
      doGetExpired in class org.eclipse.jetty.session.AbstractSessionDataStore
    • doCleanOrphans

      public void doCleanOrphans(long timeLimit)
      Specified by:
      doCleanOrphans in class org.eclipse.jetty.session.AbstractSessionDataStore
    • initialize

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

      public void doStore(String id, org.eclipse.jetty.session.SessionData data, long lastSaveTime) throws Exception
      Specified by:
      doStore in class org.eclipse.jetty.session.AbstractSessionDataStore
      Throws:
      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 String toString()
      Overrides:
      toString in class org.eclipse.jetty.session.AbstractSessionDataStore