Package org.eclipse.jetty.nosql.mongodb
Class MongoSessionDataStore
- 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.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
- 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_nameEg"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
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String__ACCESSEDLast access time of sessionstatic java.lang.String__ATTRIBUTESstatic java.lang.String__CONTEXTName of nested document field containing 1 sub document per context for which the session id is in usestatic java.lang.String__CREATEDTime of session creationstatic java.lang.String__EXPIRYTime this session will expire, based on last access time and maxIdlestatic java.lang.String__IDSession idstatic java.lang.String__LAST_ACCESSEDstatic java.lang.String__LASTNODEstatic java.lang.String__LASTSAVEDstatic java.lang.String__MAX_IDLEThe max idle time of a session (smallest value across all contexts which has a session with the same id)static java.lang.String__METADATASpecial attribute for a session that is context-specificstatic java.lang.String__VALIDWhether or not session is validstatic java.lang.String__VERSIONSpecial 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
-
-
Constructor Summary
Constructors Constructor Description MongoSessionDataStore()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleandelete(java.lang.String id)java.util.Set<java.lang.String>doGetExpired(java.util.Set<java.lang.String> candidates)org.eclipse.jetty.server.session.SessionDatadoLoad(java.lang.String id)voiddoStore(java.lang.String id, org.eclipse.jetty.server.session.SessionData data, long lastSaveTime)protected voidensureIndexes()booleanexists(java.lang.String id)com.mongodb.DBCollectiongetDBCollection()voidinitialize(org.eclipse.jetty.server.session.SessionContext context)booleanisPassivating()voidsetDBCollection(com.mongodb.DBCollection collection)java.lang.StringtoString()-
Methods inherited from class org.eclipse.jetty.nosql.NoSqlSessionDataStore
newSessionData
-
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, setStopTimeout, start, stop, unmanage, updateBean, updateBean, updateBeans
-
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
getEventListeners, getState, getState, getStopTimeout, 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
-
-
-
-
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
-
__LASTSAVED
public static final java.lang.String __LASTSAVED
- See Also:
- Constant Field Values
-
__LASTNODE
public static final java.lang.String __LASTNODE
- See Also:
- Constant Field Values
-
__ACCESSED
public static final java.lang.String __ACCESSED
Last access time of session- See Also:
- Constant Field Values
-
__LAST_ACCESSED
public static final java.lang.String __LAST_ACCESSED
- See Also:
- Constant Field Values
-
__ATTRIBUTES
public static final java.lang.String __ATTRIBUTES
- 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
-
__ID
public static final java.lang.String __ID
Session id- See Also:
- Constant Field Values
-
-
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:
doLoadin classorg.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:
doGetExpiredin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-
initialize
public void initialize(org.eclipse.jetty.server.session.SessionContext context) throws java.lang.Exception- Specified by:
initializein interfaceorg.eclipse.jetty.server.session.SessionDataMap- Overrides:
initializein classorg.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:
doStorein classorg.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:
toStringin classorg.eclipse.jetty.server.session.AbstractSessionDataStore
-
-