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
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.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
Modifier and TypeFieldDescriptionstatic final String
Last access time of sessionstatic final String
static final String
Name of nested document field containing 1 sub document per context for which the session id is in usestatic final String
Time of session creationstatic final String
Time this session will expire, based on last access time and maxIdlestatic final String
Session idstatic 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-specificstatic final String
Whether or not session is validstatic final String
Special attribute per session per context, incremented each time attributes are modifiedFields 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
-
Method Summary
Modifier and TypeMethodDescriptionboolean
doCheckExpired
(Set<String> candidates, long time) void
doCleanOrphans
(long timeLimit) boolean
doGetExpired
(long timeLimit) org.eclipse.jetty.session.SessionData
void
protected void
com.mongodb.DBCollection
void
initialize
(org.eclipse.jetty.session.SessionContext context) boolean
void
setDBCollection
(com.mongodb.DBCollection collection) toString()
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
-
__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:
doLoad
in classorg.eclipse.jetty.session.AbstractSessionDataStore
- Throws:
Exception
-
delete
- Throws:
Exception
-
doExists
- Specified by:
doExists
in classorg.eclipse.jetty.session.AbstractSessionDataStore
- Throws:
Exception
-
doCheckExpired
- Specified by:
doCheckExpired
in classorg.eclipse.jetty.session.AbstractSessionDataStore
-
doGetExpired
- Specified by:
doGetExpired
in classorg.eclipse.jetty.session.AbstractSessionDataStore
-
doCleanOrphans
public void doCleanOrphans(long timeLimit) - Specified by:
doCleanOrphans
in classorg.eclipse.jetty.session.AbstractSessionDataStore
-
initialize
- Specified by:
initialize
in interfaceorg.eclipse.jetty.session.SessionDataMap
- Overrides:
initialize
in classorg.eclipse.jetty.session.AbstractSessionDataStore
- Throws:
Exception
- See Also:
-
doStore
public void doStore(String id, org.eclipse.jetty.session.SessionData data, long lastSaveTime) throws Exception - Specified by:
doStore
in classorg.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
- Overrides:
toString
in classorg.eclipse.jetty.session.AbstractSessionDataStore
-