java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.server.session.AbstractSessionDataStore
org.eclipse.jetty.nosql.NoSqlSessionDataStore
org.eclipse.jetty.nosql.mongodb.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.Dumpable.DumpableContainer,org.eclipse.jetty.util.component.LifeCycle
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
- 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.NoSqlSessionDataNested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopExceptionNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Container
org.eclipse.jetty.util.component.Container.InheritedListener, org.eclipse.jetty.util.component.Container.ListenerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.Dumpable
org.eclipse.jetty.util.component.Dumpable.DumpableContainerNested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
org.eclipse.jetty.util.component.LifeCycle.Listener -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringLast access time of sessionstatic final Stringstatic final StringName of nested document field containing 1 sub document per context for which the session id is in usestatic final StringTime of session creationstatic final StringTime this session will expire, based on last access time and maxIdlestatic final StringSession idstatic final Stringstatic final Stringstatic final Stringstatic final StringThe max idle time of a session (smallest value across all contexts which has a session with the same id)static final StringSpecial attribute for a session that is context-specificstatic final StringWhether or not session is validstatic final StringSpecial attribute per session per context, incremented each time attributes are modifiedFields inherited from class org.eclipse.jetty.server.session.AbstractSessionDataStore
_context, _gracePeriodSec, _lastExpiryCheckTime, _lastOrphanSweepTime, _savePeriodSec, DEFAULT_GRACE_PERIOD_SEC, DEFAULT_SAVE_PERIOD_SECFields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, STARTED, STARTING, STOPPED, STOPPINGFields inherited from interface org.eclipse.jetty.util.component.Dumpable
KEY -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleandoCheckExpired(Set<String> candidates, long time) voiddoCleanOrphans(long timeLimit) booleandoGetExpired(long timeLimit) org.eclipse.jetty.server.session.SessionDatavoidprotected voidcom.mongodb.DBCollectionvoidinitialize(org.eclipse.jetty.server.session.SessionContext context) booleanvoidsetDBCollection(com.mongodb.DBCollection collection) toString()Methods inherited from class org.eclipse.jetty.nosql.NoSqlSessionDataStore
newSessionDataMethods inherited from class org.eclipse.jetty.server.session.AbstractSessionDataStore
checkStarted, cleanOrphans, doStart, exists, getExpired, getGracePeriodSec, getSavePeriodSec, load, setGracePeriodSec, setSavePeriodSec, storeMethods 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, updateBeansMethods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, setEventListeners, start, stopMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.jetty.util.component.Container
getCachedBeans, getEventListenersMethods inherited from interface org.eclipse.jetty.util.component.Dumpable
dumpSelfMethods inherited from interface org.eclipse.jetty.util.component.Dumpable.DumpableContainer
isDumpableMethods inherited from interface org.eclipse.jetty.util.component.LifeCycle
addEventListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, start, stop
-
Field Details
-
__METADATA
Special attribute for a session that is context-specific- See Also:
-
__CONTEXT
Name of nested document field containing 1 sub document per context for which the session id is in use- See Also:
-
__VERSION
Special attribute per session per context, incremented each time attributes are modified- See Also:
-
__LASTSAVED
- See Also:
-
__LASTNODE
- See Also:
-
__ACCESSED
Last access time of session- See Also:
-
__LAST_ACCESSED
- See Also:
-
__ATTRIBUTES
- See Also:
-
__EXPIRY
Time this session will expire, based on last access time and maxIdle- See Also:
-
__MAX_IDLE
The max idle time of a session (smallest value across all contexts which has a session with the same id)- See Also:
-
__CREATED
Time of session creation- See Also:
-
__VALID
Whether or not session is valid- See Also:
-
__ID
Session id- See Also:
-
-
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
- Specified by:
doLoadin classorg.eclipse.jetty.server.session.AbstractSessionDataStore- Throws:
Exception
-
delete
- Throws:
Exception
-
doExists
- Specified by:
doExistsin classorg.eclipse.jetty.server.session.AbstractSessionDataStore- Throws:
Exception
-
doCheckExpired
- Specified by:
doCheckExpiredin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-
doGetExpired
- Specified by:
doGetExpiredin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-
doCleanOrphans
public void doCleanOrphans(long timeLimit) - Specified by:
doCleanOrphansin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-
initialize
- Specified by:
initializein interfaceorg.eclipse.jetty.server.session.SessionDataMap- Overrides:
initializein classorg.eclipse.jetty.server.session.AbstractSessionDataStore- Throws:
Exception- See Also:
-
doStore
public void doStore(String id, org.eclipse.jetty.server.session.SessionData data, long lastSaveTime) throws Exception - Specified by:
doStorein classorg.eclipse.jetty.server.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
- Overrides:
toStringin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-