blob: 321a98d7e1d46530d524f74a8830be463861f1bf [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>FileSessionDataStore (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="FileSessionDataStore (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FileSessionDataStore.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.server.session</a></div>
<h2 title="Class FileSessionDataStore" class="title">Class FileSessionDataStore</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">org.eclipse.jetty.util.component.AbstractLifeCycle</a></li>
<li>
<ul class="inheritance">
<li><a href="../../util/component/ContainerLifeCycle.html" title="class in org.eclipse.jetty.util.component">org.eclipse.jetty.util.component.ContainerLifeCycle</a></li>
<li>
<ul class="inheritance">
<li><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">org.eclipse.jetty.server.session.AbstractSessionDataStore</a></li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.server.session.FileSessionDataStore</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a></code>, <code><a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code>, <code><a href="../../util/component/Container.html" title="interface in org.eclipse.jetty.util.component">Container</a></code>, <code><a href="../../util/component/Destroyable.html" title="interface in org.eclipse.jetty.util.component">Destroyable</a></code>, <code><a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></code>, <code><a href="../../util/component/Dumpable.DumpableContainer.html" title="interface in org.eclipse.jetty.util.component">Dumpable.DumpableContainer</a></code>, <code><a href="../../util/component/LifeCycle.html" title="interface in org.eclipse.jetty.util.component">LifeCycle</a></code></dd>
</dl>
<hr>
<pre><a href="../../util/annotation/ManagedObject.html" title="annotation in org.eclipse.jetty.util.annotation">@ManagedObject</a>
public class <span class="typeNameLabel">FileSessionDataStore</span>
extends <a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></pre>
<div class="block">FileSessionDataStore
A file-based store of session data.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.AbstractLifeCycle">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</a></h3>
<code><a href="../../util/component/AbstractLifeCycle.AbstractLifeCycleListener.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle.AbstractLifeCycleListener</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.Container">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Container.html" title="interface in org.eclipse.jetty.util.component">Container</a></h3>
<code><a href="../../util/component/Container.InheritedListener.html" title="interface in org.eclipse.jetty.util.component">Container.InheritedListener</a>, <a href="../../util/component/Container.Listener.html" title="interface in org.eclipse.jetty.util.component">Container.Listener</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.DumpableContainer.html" title="interface in org.eclipse.jetty.util.component">Dumpable.DumpableContainer</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.LifeCycle">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/LifeCycle.html" title="interface in org.eclipse.jetty.util.component">LifeCycle</a></h3>
<code><a href="../../util/component/LifeCycle.Listener.html" title="interface in org.eclipse.jetty.util.component">LifeCycle.Listener</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_contextString">_contextString</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_deleteUnrestorableFiles">_deleteUnrestorableFiles</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_lastSweepTime">_lastSweepTime</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected java.util.Map&lt;java.lang.String,&#8203;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_sessionFileMap">_sessionFileMap</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected java.io.File</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_storeDir">_storeDir</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.eclipse.jetty.server.session.AbstractSessionDataStore">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.eclipse.jetty.server.session.<a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></h3>
<code><a href="AbstractSessionDataStore.html#_context">_context</a>, <a href="AbstractSessionDataStore.html#_gracePeriodSec">_gracePeriodSec</a>, <a href="AbstractSessionDataStore.html#_lastExpiryCheckTime">_lastExpiryCheckTime</a>, <a href="AbstractSessionDataStore.html#_savePeriodSec">_savePeriodSec</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.eclipse.jetty.util.component.AbstractLifeCycle">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</a></h3>
<code><a href="../../util/component/AbstractLifeCycle.html#FAILED">FAILED</a>, <a href="../../util/component/AbstractLifeCycle.html#RUNNING">RUNNING</a>, <a href="../../util/component/AbstractLifeCycle.html#STARTED">STARTED</a>, <a href="../../util/component/AbstractLifeCycle.html#STARTING">STARTING</a>, <a href="../../util/component/AbstractLifeCycle.html#STOPPED">STOPPED</a>, <a href="../../util/component/AbstractLifeCycle.html#STOPPING">STOPPING</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.html#KEY">KEY</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">FileSessionDataStore</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#delete(java.lang.String)">delete</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Delete a session</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#deleteFile(java.lang.String)">deleteFile</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">
<div class="block">Delete the file associated with a session</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doGetExpired(java.util.Set)">doGetExpired</a></span>&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates)</code></th>
<td class="colLast">
<div class="block">Check to see which sessions have expired.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doLoad(java.lang.String)">doLoad</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Load the session from persistent store.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doStart()">doStart</a></span>()</code></th>
<td class="colLast">
<div class="block">Starts the managed lifecycle beans in the order they were added.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doStop()">doStop</a></span>()</code></th>
<td class="colLast">
<div class="block">Stops the managed lifecycle beans in the reverse order they were added.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doStore(java.lang.String,org.eclipse.jetty.server.session.SessionData,long)">doStore</a></span>&#8203;(java.lang.String&nbsp;id,
<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data,
long&nbsp;lastSaveTime)</code></th>
<td class="colLast">
<div class="block">Store the session data persistently.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#exists(java.lang.String)">exists</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Test if data exists for a given session id.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getContextFromFilename(java.lang.String)">getContextFromFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getExpiryFromFilename(java.lang.String)">getExpiryFromFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdFromFilename(java.lang.String)">getIdFromFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdWithContext(java.lang.String)">getIdWithContext</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Get the session id with its context.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdWithContextAndExpiry(org.eclipse.jetty.server.session.SessionData)">getIdWithContextAndExpiry</a></span>&#8203;(<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data)</code></th>
<td class="colLast">
<div class="block">Get the session id with its context and its expiry time</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getIdWithContextFromFilename(java.lang.String)">getIdWithContextFromFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">
<div class="block">Extract the session id and context from the filename</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>java.io.File</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getStoreDir()">getStoreDir</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#initialize(org.eclipse.jetty.server.session.SessionContext)">initialize</a></span>&#8203;(<a href="SessionContext.html" title="class in org.eclipse.jetty.server.session">SessionContext</a>&nbsp;context)</code></th>
<td class="colLast">
<div class="block">Initialize this data map for the
given context.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#initializeStore()">initializeStore</a></span>()</code></th>
<td class="colLast">
<div class="block">Read the names of the existing session files and build a map of
fully qualified session ids (ie with context) to filename.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isDeleteUnrestorableFiles()">isDeleteUnrestorableFiles</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isOurContextSessionFilename(java.lang.String)">isOurContextSessionFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">
<div class="block">Check if the filename matches our session pattern
and is a session for our context.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isPassivating()">isPassivating</a></span>()</code></th>
<td class="colLast">
<div class="block">True if this type of datastore will passivate session objects</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>protected boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isSessionFilename(java.lang.String)">isSessionFilename</a></span>&#8203;(java.lang.String&nbsp;filename)</code></th>
<td class="colLast">
<div class="block">Check if the filename is a session filename.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>protected <a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#load(java.io.InputStream,java.lang.String)">load</a></span>&#8203;(java.io.InputStream&nbsp;is,
java.lang.String&nbsp;expectedId)</code></th>
<td class="colLast">
<div class="block">Load the session data from a file.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#save(java.io.OutputStream,java.lang.String,org.eclipse.jetty.server.session.SessionData)">save</a></span>&#8203;(java.io.OutputStream&nbsp;os,
java.lang.String&nbsp;id,
<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data)</code></th>
<td class="colLast">
<div class="block">Save the session data.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setDeleteUnrestorableFiles(boolean)">setDeleteUnrestorableFiles</a></span>&#8203;(boolean&nbsp;deleteUnrestorableFiles)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setStoreDir(java.io.File)">setStoreDir</a></span>&#8203;(java.io.File&nbsp;storeDir)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sweepDisk()">sweepDisk</a></span>()</code></th>
<td class="colLast">
<div class="block">Check all session files that do not belong to this context and
remove any that expired long ago (ie at least 5 gracePeriods ago).</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sweepFile(long,java.nio.file.Path)">sweepFile</a></span>&#8203;(long&nbsp;now,
java.nio.file.Path&nbsp;p)</code></th>
<td class="colLast">
<div class="block">Check to see if the expiry on the file is very old, and
delete the file if so.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.server.session.AbstractSessionDataStore">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.server.session.<a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></h3>
<code><a href="AbstractSessionDataStore.html#checkStarted()">checkStarted</a>, <a href="AbstractSessionDataStore.html#getExpired(java.util.Set)">getExpired</a>, <a href="AbstractSessionDataStore.html#getGracePeriodSec()">getGracePeriodSec</a>, <a href="AbstractSessionDataStore.html#getSavePeriodSec()">getSavePeriodSec</a>, <a href="AbstractSessionDataStore.html#load(java.lang.String)">load</a>, <a href="AbstractSessionDataStore.html#newSessionData(java.lang.String,long,long,long,long)">newSessionData</a>, <a href="AbstractSessionDataStore.html#setGracePeriodSec(int)">setGracePeriodSec</a>, <a href="AbstractSessionDataStore.html#setSavePeriodSec(int)">setSavePeriodSec</a>, <a href="AbstractSessionDataStore.html#store(java.lang.String,org.eclipse.jetty.server.session.SessionData)">store</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.ContainerLifeCycle">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/ContainerLifeCycle.html" title="class in org.eclipse.jetty.util.component">ContainerLifeCycle</a></h3>
<code><a href="../../util/component/ContainerLifeCycle.html#addBean(java.lang.Object)">addBean</a>, <a href="../../util/component/ContainerLifeCycle.html#addBean(java.lang.Object,boolean)">addBean</a>, <a href="../../util/component/ContainerLifeCycle.html#addEventListener(org.eclipse.jetty.util.component.Container.Listener)">addEventListener</a>, <a href="../../util/component/ContainerLifeCycle.html#addManaged(org.eclipse.jetty.util.component.LifeCycle)">addManaged</a>, <a href="../../util/component/ContainerLifeCycle.html#contains(java.lang.Object)">contains</a>, <a href="../../util/component/ContainerLifeCycle.html#destroy()">destroy</a>, <a href="../../util/component/ContainerLifeCycle.html#dump()">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable,java.lang.String)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable,java.lang.String,java.util.Collection...)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(org.eclipse.jetty.util.component.Dumpable)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpBeans(java.lang.Appendable,java.lang.String,java.util.Collection...)">dumpBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpObject(java.lang.Appendable,java.lang.Object)">dumpObject</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpObjects(java.lang.Appendable,java.lang.String,java.lang.Object...)">dumpObjects</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpStdErr()">dumpStdErr</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpThis(java.lang.Appendable)">dumpThis</a>, <a href="../../util/component/ContainerLifeCycle.html#getBean(java.lang.Class)">getBean</a>, <a href="../../util/component/ContainerLifeCycle.html#getBeans()">getBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getBeans(java.lang.Class)">getBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getContainedBeans(java.lang.Class)">getContainedBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getContainedBeans(java.lang.Class,java.util.Collection)">getContainedBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#isAuto(java.lang.Object)">isAuto</a>, <a href="../../util/component/ContainerLifeCycle.html#isManaged(java.lang.Object)">isManaged</a>, <a href="../../util/component/ContainerLifeCycle.html#isUnmanaged(java.lang.Object)">isUnmanaged</a>, <a href="../../util/component/ContainerLifeCycle.html#manage(java.lang.Object)">manage</a>, <a href="../../util/component/ContainerLifeCycle.html#removeBean(java.lang.Object)">removeBean</a>, <a href="../../util/component/ContainerLifeCycle.html#removeBeans()">removeBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#removeEventListener(org.eclipse.jetty.util.component.Container.Listener)">removeEventListener</a>, <a href="../../util/component/ContainerLifeCycle.html#setBeans(java.util.Collection)">setBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#setStopTimeout(long)">setStopTimeout</a>, <a href="../../util/component/ContainerLifeCycle.html#start(org.eclipse.jetty.util.component.LifeCycle)">start</a>, <a href="../../util/component/ContainerLifeCycle.html#stop(org.eclipse.jetty.util.component.LifeCycle)">stop</a>, <a href="../../util/component/ContainerLifeCycle.html#unmanage(java.lang.Object)">unmanage</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBean(java.lang.Object,java.lang.Object)">updateBean</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBean(java.lang.Object,java.lang.Object,boolean)">updateBean</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBeans(java.lang.Object%5B%5D,java.lang.Object%5B%5D)">updateBeans</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.AbstractLifeCycle">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</a></h3>
<code><a href="../../util/component/AbstractLifeCycle.html#addLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">addLifeCycleListener</a>, <a href="../../util/component/AbstractLifeCycle.html#getState()">getState</a>, <a href="../../util/component/AbstractLifeCycle.html#getState(org.eclipse.jetty.util.component.LifeCycle)">getState</a>, <a href="../../util/component/AbstractLifeCycle.html#getStopTimeout()">getStopTimeout</a>, <a href="../../util/component/AbstractLifeCycle.html#isFailed()">isFailed</a>, <a href="../../util/component/AbstractLifeCycle.html#isRunning()">isRunning</a>, <a href="../../util/component/AbstractLifeCycle.html#isStarted()">isStarted</a>, <a href="../../util/component/AbstractLifeCycle.html#isStarting()">isStarting</a>, <a href="../../util/component/AbstractLifeCycle.html#isStopped()">isStopped</a>, <a href="../../util/component/AbstractLifeCycle.html#isStopping()">isStopping</a>, <a href="../../util/component/AbstractLifeCycle.html#removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">removeLifeCycleListener</a>, <a href="../../util/component/AbstractLifeCycle.html#start()">start</a>, <a href="../../util/component/AbstractLifeCycle.html#stop()">stop</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.html#dumpSelf()">dumpSelf</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.Dumpable.DumpableContainer">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.DumpableContainer.html" title="interface in org.eclipse.jetty.util.component">Dumpable.DumpableContainer</a></h3>
<code><a href="../../util/component/Dumpable.DumpableContainer.html#isDumpable(java.lang.Object)">isDumpable</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.LifeCycle">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/LifeCycle.html" title="interface in org.eclipse.jetty.util.component">LifeCycle</a></h3>
<code><a href="../../util/component/LifeCycle.html#addLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">addLifeCycleListener</a>, <a href="../../util/component/LifeCycle.html#isFailed()">isFailed</a>, <a href="../../util/component/LifeCycle.html#isRunning()">isRunning</a>, <a href="../../util/component/LifeCycle.html#isStarted()">isStarted</a>, <a href="../../util/component/LifeCycle.html#isStarting()">isStarting</a>, <a href="../../util/component/LifeCycle.html#isStopped()">isStopped</a>, <a href="../../util/component/LifeCycle.html#isStopping()">isStopping</a>, <a href="../../util/component/LifeCycle.html#removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">removeLifeCycleListener</a>, <a href="../../util/component/LifeCycle.html#start()">start</a>, <a href="../../util/component/LifeCycle.html#stop()">stop</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="_storeDir">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_storeDir</h4>
<pre>protected&nbsp;java.io.File _storeDir</pre>
</li>
</ul>
<a id="_deleteUnrestorableFiles">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_deleteUnrestorableFiles</h4>
<pre>protected&nbsp;boolean _deleteUnrestorableFiles</pre>
</li>
</ul>
<a id="_sessionFileMap">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_sessionFileMap</h4>
<pre>protected&nbsp;java.util.Map&lt;java.lang.String,&#8203;java.lang.String&gt; _sessionFileMap</pre>
</li>
</ul>
<a id="_contextString">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_contextString</h4>
<pre>protected&nbsp;java.lang.String _contextString</pre>
</li>
</ul>
<a id="_lastSweepTime">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>_lastSweepTime</h4>
<pre>protected&nbsp;long _lastSweepTime</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>FileSessionDataStore</h4>
<pre>public&nbsp;FileSessionDataStore()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="initialize(org.eclipse.jetty.server.session.SessionContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initialize</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;initialize&#8203;(<a href="SessionContext.html" title="class in org.eclipse.jetty.server.session">SessionContext</a>&nbsp;context)
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataMap.html#initialize(org.eclipse.jetty.server.session.SessionContext)">SessionDataMap</a></code></span></div>
<div class="block">Initialize this data map for the
given context. A SessionDataMap can only
be used by one context(/session manager).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataMap.html#initialize(org.eclipse.jetty.server.session.SessionContext)">initialize</a></code>&nbsp;in interface&nbsp;<code><a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#initialize(org.eclipse.jetty.server.session.SessionContext)">initialize</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>context</code> - context associated</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to initialize the</dd>
</dl>
</li>
</ul>
<a id="doStart()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doStart</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;doStart()
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../util/component/ContainerLifeCycle.html#doStart()">ContainerLifeCycle</a></code></span></div>
<div class="block">Starts the managed lifecycle beans in the order they were added.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doStart()">doStart</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="doStop()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doStop</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;doStop()
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../util/component/ContainerLifeCycle.html#doStop()">ContainerLifeCycle</a></code></span></div>
<div class="block">Stops the managed lifecycle beans in the reverse order they were added.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../util/component/ContainerLifeCycle.html#doStop()">doStop</a></code>&nbsp;in class&nbsp;<code><a href="../../util/component/ContainerLifeCycle.html" title="class in org.eclipse.jetty.util.component">ContainerLifeCycle</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="getStoreDir()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getStoreDir</h4>
<pre class="methodSignature"><a href="../../util/annotation/ManagedAttribute.html" title="annotation in org.eclipse.jetty.util.annotation">@ManagedAttribute</a>(<a href="../../util/annotation/ManagedAttribute.html#value()">value</a>="dir where sessions are stored",
<a href="../../util/annotation/ManagedAttribute.html#readonly()">readonly</a>=true)
public&nbsp;java.io.File&nbsp;getStoreDir()</pre>
</li>
</ul>
<a id="setStoreDir(java.io.File)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setStoreDir</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setStoreDir&#8203;(java.io.File&nbsp;storeDir)</pre>
</li>
</ul>
<a id="isDeleteUnrestorableFiles()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isDeleteUnrestorableFiles</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isDeleteUnrestorableFiles()</pre>
</li>
</ul>
<a id="setDeleteUnrestorableFiles(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setDeleteUnrestorableFiles</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setDeleteUnrestorableFiles&#8203;(boolean&nbsp;deleteUnrestorableFiles)</pre>
</li>
</ul>
<a id="delete(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>delete</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;delete&#8203;(java.lang.String&nbsp;id)
throws java.lang.Exception</pre>
<div class="block">Delete a session</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - session id</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the session was deleted</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to delete session data</dd>
</dl>
</li>
</ul>
<a id="deleteFile(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteFile</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;deleteFile&#8203;(java.lang.String&nbsp;filename)
throws java.lang.Exception</pre>
<div class="block">Delete the file associated with a session</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filename</code> - name of the file containing the session's information</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if file was deleted, false otherwise</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - indicating delete failure</dd>
</dl>
</li>
</ul>
<a id="doGetExpired(java.util.Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doGetExpired</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;doGetExpired&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates)</pre>
<div class="block">Check to see which sessions have expired.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doGetExpired(java.util.Set)">doGetExpired</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>candidates</code> - the set of session ids that the SessionCache believes
have expired</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the complete set of sessions that have expired, including those
that are not currently loaded into the SessionCache</dd>
</dl>
</li>
</ul>
<a id="sweepDisk()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sweepDisk</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;sweepDisk()</pre>
<div class="block">Check all session files that do not belong to this context and
remove any that expired long ago (ie at least 5 gracePeriods ago).</div>
</li>
</ul>
<a id="sweepFile(long,java.nio.file.Path)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sweepFile</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;sweepFile&#8203;(long&nbsp;now,
java.nio.file.Path&nbsp;p)</pre>
<div class="block">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.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>now</code> - the time now in msec</dd>
<dd><code>p</code> - the file to check</dd>
</dl>
</li>
</ul>
<a id="doLoad(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doLoad</h4>
<pre class="methodSignature">public&nbsp;<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;doLoad&#8203;(java.lang.String&nbsp;id)
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractSessionDataStore.html#doLoad(java.lang.String)">AbstractSessionDataStore</a></code></span></div>
<div class="block">Load the session from persistent store.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doLoad(java.lang.String)">doLoad</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id of the session to load</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the re-inflated session</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to load the session</dd>
</dl>
</li>
</ul>
<a id="doStore(java.lang.String,org.eclipse.jetty.server.session.SessionData,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doStore</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;doStore&#8203;(java.lang.String&nbsp;id,
<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data,
long&nbsp;lastSaveTime)
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractSessionDataStore.html#doStore(java.lang.String,org.eclipse.jetty.server.session.SessionData,long)">AbstractSessionDataStore</a></code></span></div>
<div class="block">Store the session data persistently.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doStore(java.lang.String,org.eclipse.jetty.server.session.SessionData,long)">doStore</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - identity of session to store</dd>
<dd><code>data</code> - info of the session</dd>
<dd><code>lastSaveTime</code> - time of previous save or 0 if never saved</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to store data</dd>
</dl>
</li>
</ul>
<a id="initializeStore()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>initializeStore</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;initializeStore()
throws java.lang.Exception</pre>
<div class="block">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.</div>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - 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.</dd>
</dl>
</li>
</ul>
<a id="isPassivating()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPassivating</h4>
<pre class="methodSignature"><a href="../../util/annotation/ManagedAttribute.html" title="annotation in org.eclipse.jetty.util.annotation">@ManagedAttribute</a>(<a href="../../util/annotation/ManagedAttribute.html#value()">value</a>="are sessions serialized by this store",
<a href="../../util/annotation/ManagedAttribute.html#readonly()">readonly</a>=true)
public&nbsp;boolean&nbsp;isPassivating()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataStore.html#isPassivating()">SessionDataStore</a></code></span></div>
<div class="block">True if this type of datastore will passivate session objects</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if this store can passivate sessions, false otherwise</dd>
</dl>
</li>
</ul>
<a id="exists(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>exists</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;exists&#8203;(java.lang.String&nbsp;id)
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataStore.html#exists(java.lang.String)">SessionDataStore</a></code></span></div>
<div class="block">Test if data exists for a given session id.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - Identity of session whose existence should be checked</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if valid, non-expired session exists</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if problem checking existence with persistence layer</dd>
</dl>
</li>
</ul>
<a id="save(java.io.OutputStream,java.lang.String,org.eclipse.jetty.server.session.SessionData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>save</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;save&#8203;(java.io.OutputStream&nbsp;os,
java.lang.String&nbsp;id,
<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data)
throws java.io.IOException</pre>
<div class="block">Save the session data.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>os</code> - the output stream to save to</dd>
<dd><code>id</code> - identity of the session</dd>
<dd><code>data</code> - the info of the session</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></dd>
</dl>
</li>
</ul>
<a id="getIdWithContext(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdWithContext</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getIdWithContext&#8203;(java.lang.String&nbsp;id)</pre>
<div class="block">Get the session id with its context.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - identity of session</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the session id plus context</dd>
</dl>
</li>
</ul>
<a id="getIdWithContextAndExpiry(org.eclipse.jetty.server.session.SessionData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdWithContextAndExpiry</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getIdWithContextAndExpiry&#8203;(<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data)</pre>
<div class="block">Get the session id with its context and its expiry time</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the session id plus context and expiry</dd>
</dl>
</li>
</ul>
<a id="getIdFromFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdFromFilename</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getIdFromFilename&#8203;(java.lang.String&nbsp;filename)</pre>
</li>
</ul>
<a id="getExpiryFromFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExpiryFromFilename</h4>
<pre class="methodSignature">protected&nbsp;long&nbsp;getExpiryFromFilename&#8203;(java.lang.String&nbsp;filename)</pre>
</li>
</ul>
<a id="getContextFromFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getContextFromFilename</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getContextFromFilename&#8203;(java.lang.String&nbsp;filename)</pre>
</li>
</ul>
<a id="getIdWithContextFromFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIdWithContextFromFilename</h4>
<pre class="methodSignature">protected&nbsp;java.lang.String&nbsp;getIdWithContextFromFilename&#8203;(java.lang.String&nbsp;filename)</pre>
<div class="block">Extract the session id and context from the filename</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filename</code> - the name of the file to use</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the session id plus context</dd>
</dl>
</li>
</ul>
<a id="isSessionFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isSessionFilename</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;isSessionFilename&#8203;(java.lang.String&nbsp;filename)</pre>
<div class="block">Check if the filename is a session filename.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filename</code> - the filename to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the filename has the correct filename format</dd>
</dl>
</li>
</ul>
<a id="isOurContextSessionFilename(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isOurContextSessionFilename</h4>
<pre class="methodSignature">protected&nbsp;boolean&nbsp;isOurContextSessionFilename&#8203;(java.lang.String&nbsp;filename)</pre>
<div class="block">Check if the filename matches our session pattern
and is a session for our context.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>filename</code> - the filename to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the filename has the correct filename format and is for this context</dd>
</dl>
</li>
</ul>
<a id="load(java.io.InputStream,java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>load</h4>
<pre class="methodSignature">protected&nbsp;<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;load&#8203;(java.io.InputStream&nbsp;is,
java.lang.String&nbsp;expectedId)
throws java.lang.Exception</pre>
<div class="block">Load the session data from a file.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>is</code> - file input stream containing session data</dd>
<dd><code>expectedId</code> - the id we've been told to load</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the session data</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#toString()">toString</a></code>&nbsp;in class&nbsp;<code><a href="AbstractSessionDataStore.html" title="class in org.eclipse.jetty.server.session">AbstractSessionDataStore</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/FileSessionDataStore.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>