blob: c8ac28e4890aab162fd22985227f382f85a0da79 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.11) on Mon Jun 14 16:44:01 EDT 2021 -->
<title>FileSessionDataStore (Eclipse Jetty API Doc - v11.0.5)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-06-14">
<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 (Eclipse Jetty API Doc - v11.0.5)";
}
}
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,"i28":10,"i29":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 = true;
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>, <a href="../../util/component/AbstractLifeCycle.StopException.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle.StopException</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#_lastOrphanSweepTime">_lastOrphanSweepTime</a>, <a href="AbstractSessionDataStore.html#_savePeriodSec">_savePeriodSec</a>, <a href="AbstractSessionDataStore.html#DEFAULT_GRACE_PERIOD_SEC">DEFAULT_GRACE_PERIOD_SEC</a>, <a href="AbstractSessionDataStore.html#DEFAULT_SAVE_PERIOD_SEC">DEFAULT_SAVE_PERIOD_SEC</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#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="#doCheckExpired(java.util.Set,long)">doCheckExpired</a></span>&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates,
long&nbsp;time)</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>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doCleanOrphans(long)">doCleanOrphans</a></span>&#8203;(long&nbsp;time)</code></th>
<td class="colLast">
<div class="block">Implemented by subclasses to delete sessions for other contexts that
expired at or before the timeLimit.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#doExists(java.lang.String)">doExists</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Check if a session for the given id exists.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<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(long)">doGetExpired</a></span>&#8203;(long&nbsp;timeLimit)</code></th>
<td class="colLast">
<div class="block">Implemented by subclasses to find sessions for this context in the store
that expired at or before the time limit and thus not being actively
managed by any node.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<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="i7" class="rowColor">
<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="i8" class="altColor">
<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="i9" class="rowColor">
<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="i10" 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="i11" 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="i12" 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="i13" 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="i14" 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="i15" 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="i16" 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="i17" 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="i18" 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="i19" 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="i20" 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="i21" 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="i22" 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="i23" 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="i24" 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="i25" 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="i26" 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="i27" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#sweepDisk(long)">sweepDisk</a></span>&#8203;(long&nbsp;time)</code></th>
<td class="colLast">
<div class="block">Check all session files for any context and remove any
that expired at or before the time limit.</div>
</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>protected 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;time,
java.nio.file.Path&nbsp;p)</code></th>
<td class="colLast">
<div class="block">Delete file (from any context) that expired at or before the given time</div>
</td>
</tr>
<tr id="i29" 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#cleanOrphans(long)">cleanOrphans</a>, <a href="AbstractSessionDataStore.html#exists(java.lang.String)">exists</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(java.util.EventListener)">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#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#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(java.util.EventListener)">removeEventListener</a>, <a href="../../util/component/ContainerLifeCycle.html#setBeans(java.util.Collection)">setBeans</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>, <a href="../../util/component/ContainerLifeCycle.html#updateBeans(java.util.Collection,java.util.Collection)">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#getEventListeners()">getEventListeners</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#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#setEventListeners(java.util.Collection)">setEventListeners</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.Container">
<!-- -->
</a>
<h3>Methods 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.html#getCachedBeans(java.lang.Class)">getCachedBeans</a>, <a href="../../util/component/Container.html#getEventListeners()">getEventListeners</a></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#addEventListener(java.util.EventListener)">addEventListener</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#removeEventListener(java.util.EventListener)">removeEventListener</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><a href="../../util/component/AbstractLifeCycle.StopException.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle.StopException</a></code> - If thrown, the lifecycle will immediately be stopped.</dd>
<dd><code>java.lang.Exception</code> - If there was a problem starting. Will cause a transition to FAILED state</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> - If there was a problem stopping. Will cause a transition to FAILED state</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="doCheckExpired(java.util.Set,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCheckExpired</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;doCheckExpired&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates,
long&nbsp;time)</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#doCheckExpired(java.util.Set,long)">doCheckExpired</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>
<dd><code>time</code> - the time at which to check for expiry</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="doGetExpired(long)">
<!-- -->
</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;(long&nbsp;timeLimit)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractSessionDataStore.html#doGetExpired(long)">AbstractSessionDataStore</a></code></span></div>
<div class="block">Implemented by subclasses to find sessions for this context in the store
that expired at or before the time limit and thus not being actively
managed by any node. This method is only called periodically (the period
is configurable) to avoid putting too much load on the store.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doGetExpired(long)">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>timeLimit</code> - the upper limit of expiry times to check. Sessions expired
at or before this timestamp will match.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the empty set if there are no sessions expired as at the time, or
otherwise a set of session ids.</dd>
</dl>
</li>
</ul>
<a id="doCleanOrphans(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCleanOrphans</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;doCleanOrphans&#8203;(long&nbsp;time)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="AbstractSessionDataStore.html#doCleanOrphans(long)">AbstractSessionDataStore</a></code></span></div>
<div class="block">Implemented by subclasses to delete sessions for other contexts that
expired at or before the timeLimit. These are 'orphaned' sessions that
are no longer being actively managed by any node. These are explicitly
sessions that do NOT belong to this context (other mechanisms such as
doGetExpired take care of those). As they don't belong to this context,
they cannot be loaded by us.
This is called only periodically to avoid placing excessive load on the
store.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doCleanOrphans(long)">doCleanOrphans</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>time</code> - the upper limit of the expiry time to check in msec</dd>
</dl>
</li>
</ul>
<a id="sweepDisk(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sweepDisk</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;sweepDisk&#8203;(long&nbsp;time)</pre>
<div class="block">Check all session files for any context and remove any
that expired at or before the time limit.</div>
</li>
</ul>
<a id="sweepFile(long,java.nio.file.Path)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>sweepFile</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;sweepFile&#8203;(long&nbsp;time,
java.nio.file.Path&nbsp;p)</pre>
<div class="block">Delete file (from any context) that expired at or before the given time</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>time</code> - the time 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="doExists(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doExists</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;doExists&#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#doExists(java.lang.String)">AbstractSessionDataStore</a></code></span></div>
<div class="block">Check if a session for the given id exists.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="AbstractSessionDataStore.html#doExists(java.lang.String)">doExists</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 session id to check</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true if the session exists in the persistent store, false otherwise</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></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="paramLabel">Parameters:</span></dt>
<dd><code>data</code> - the session data</dd>
<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>