Class FileSessionDataStore
java.lang.Object
org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.ContainerLifeCycle
org.eclipse.jetty.server.session.AbstractSessionDataStore
org.eclipse.jetty.server.session.FileSessionDataStore
- All Implemented Interfaces:
SessionDataMap, SessionDataStore, Container, Destroyable, Dumpable, Dumpable.DumpableContainer, LifeCycle
FileSessionDataStore
A file-based store of session data.
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractLifeCycle
AbstractLifeCycle.AbstractLifeCycleListenerNested classes/interfaces inherited from interface Container
Container.InheritedListener, Container.ListenerNested classes/interfaces inherited from interface Dumpable
Dumpable.DumpableContainerNested classes/interfaces inherited from interface LifeCycle
LifeCycle.Listener -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected booleanprotected longprotected Fileprivate static final LoggerFields inherited from class AbstractSessionDataStore
_context, _gracePeriodSec, _lastExpiryCheckTime, _savePeriodSec -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanDelete a sessionbooleandeleteFile(String filename) Delete the file associated with a sessiondoGetExpired(Set<String> candidates) Check to see which sessions have expired.Load the session from persistent store.protected voiddoStart()Starts the managed lifecycle beans in the order they were added.protected voiddoStop()Stops the managed lifecycle beans in the reverse order they were added.voiddoStore(String id, SessionData data, long lastSaveTime) Store the session data persistently.booleanTest if data exists for a given session id.protected StringgetContextFromFilename(String filename) protected longgetExpiryFromFilename(String filename) protected StringgetIdFromFilename(String filename) protected StringGet the session id with its context.protected StringGet the session id with its context and its expiry timeprotected StringgetIdWithContextFromFilename(String filename) Extract the session id and context from the filenamevoidinitialize(SessionContext context) Initialize this data map for the given context.voidRead the names of the existing session files and build a map of fully qualified session ids (ie with context) to filename.booleanprotected booleanisOurContextSessionFilename(String filename) Check if the filename matches our session pattern and is a session for our context.booleanTrue if this type of datastore will passivate session objectsprotected booleanisSessionFilename(String filename) Check if the filename is a session filename.protected SessionDataload(InputStream is, String expectedId) Load the session data from a file.protected voidsave(OutputStream os, String id, SessionData data) Save the session data.voidsetDeleteUnrestorableFiles(boolean deleteUnrestorableFiles) voidsetStoreDir(File storeDir) voidCheck all session files that do not belong to this context and remove any that expired long ago (ie at least 5 gracePeriods ago).voidCheck to see if the expiry on the file is very old, and delete the file if so.toString()Methods inherited from class AbstractSessionDataStore
checkStarted, getExpired, getGracePeriodSec, getSavePeriodSec, load, newSessionData, setGracePeriodSec, setSavePeriodSec, storeMethods inherited from class ContainerLifeCycle
addBean, addBean, addEventListener, addManaged, contains, destroy, 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, updateBeansMethods inherited from class AbstractLifeCycle
addLifeCycleListener, getState, getState, getStopTimeout, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stopMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Dumpable.DumpableContainer
isDumpableMethods inherited from interface LifeCycle
addLifeCycleListener, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeLifeCycleListener, start, stop
-
Field Details
-
LOG
-
_storeDir
-
_deleteUnrestorableFiles
protected boolean _deleteUnrestorableFiles -
_sessionFileMap
-
_contextString
-
_lastSweepTime
protected long _lastSweepTime
-
-
Constructor Details
-
FileSessionDataStore
public FileSessionDataStore()
-
-
Method Details
-
initialize
Description copied from interface:SessionDataMapInitialize this data map for the given context. A SessionDataMap can only be used by one context(/session manager).- Specified by:
initializein interfaceSessionDataMap- Overrides:
initializein classAbstractSessionDataStore- Parameters:
context- context associated- Throws:
Exception- if unable to initialize the
-
doStart
Description copied from class:ContainerLifeCycleStarts the managed lifecycle beans in the order they were added.- Overrides:
doStartin classAbstractSessionDataStore- Throws:
Exception
-
doStop
Description copied from class:ContainerLifeCycleStops the managed lifecycle beans in the reverse order they were added.- Overrides:
doStopin classContainerLifeCycle- Throws:
Exception
-
getStoreDir
-
setStoreDir
-
isDeleteUnrestorableFiles
public boolean isDeleteUnrestorableFiles() -
setDeleteUnrestorableFiles
public void setDeleteUnrestorableFiles(boolean deleteUnrestorableFiles) -
delete
-
deleteFile
-
doGetExpired
Check to see which sessions have expired.- Specified by:
doGetExpiredin classAbstractSessionDataStore- Parameters:
candidates- the set of session ids that the SessionCache believes have expired- Returns:
- the complete set of sessions that have expired, including those that are not currently loaded into the SessionCache
-
sweepDisk
public void sweepDisk()Check all session files that do not belong to this context and remove any that expired long ago (ie at least 5 gracePeriods ago). -
sweepFile
Check to see if the expiry on the file is very old, and delete the file if so. "Old" means that it expired at least 5 gracePeriods ago. The session can belong to any context.- Parameters:
now- the time now in msecp- the file to check
-
doLoad
Description copied from class:AbstractSessionDataStoreLoad the session from persistent store.- Specified by:
doLoadin classAbstractSessionDataStore- Parameters:
id- the id of the session to load- Returns:
- the re-inflated session
- Throws:
Exception- if unable to load the session
-
doStore
Description copied from class:AbstractSessionDataStoreStore the session data persistently.- Specified by:
doStorein classAbstractSessionDataStore- Parameters:
id- identity of session to storedata- info of the sessionlastSaveTime- time of previous save or 0 if never saved- Throws:
Exception- if unable to store data
-
initializeStore
Read the names of the existing session files and build a map of fully qualified session ids (ie with context) to filename. If there is more than one file for the same session, only the most recently modified will be kept and the rest deleted. At the same time, any files - for any context - that expired a long time ago will be cleaned up.- Throws:
Exception- if storeDir doesn't exist, isn't readable/writeable or contains 2 files with the same lastmodify time for the same session. Throws IOException if the lastmodifytimes can't be read.
-
isPassivating
@ManagedAttribute(value="are sessions serialized by this store", readonly=true) public boolean isPassivating()Description copied from interface:SessionDataStoreTrue if this type of datastore will passivate session objects- Returns:
- true if this store can passivate sessions, false otherwise
-
exists
Description copied from interface:SessionDataStoreTest if data exists for a given session id.- Parameters:
id- Identity of session whose existence should be checked- Returns:
- true if valid, non-expired session exists
- Throws:
Exception- if problem checking existence with persistence layer
-
save
Save the session data.- Parameters:
os- the output stream to save toid- identity of the sessiondata- the info of the session- Throws:
IOException
-
getIdWithContext
-
getIdWithContextAndExpiry
Get the session id with its context and its expiry time- Returns:
- the session id plus context and expiry
-
getIdFromFilename
-
getExpiryFromFilename
-
getContextFromFilename
-
getIdWithContextFromFilename
-
isSessionFilename
Check if the filename is a session filename.- Parameters:
filename- the filename to check- Returns:
- true if the filename has the correct filename format
-
isOurContextSessionFilename
Check if the filename matches our session pattern and is a session for our context.- Parameters:
filename- the filename to check- Returns:
- true if the filename has the correct filename format and is for this context
-
load
Load the session data from a file.- Parameters:
is- file input stream containing session dataexpectedId- the id we've been told to load- Returns:
- the session data
- Throws:
Exception
-
toString
- Overrides:
toStringin classAbstractSessionDataStore
-