blob: 185da3471dba6d6e84b7171e309a8437d5d56021 [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.11) on Mon Oct 11 11:08:51 CDT 2021 -->
<title>AbstractSessionDataStore (Eclipse Jetty API Doc - v10.0.7)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-10-11">
<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="AbstractSessionDataStore (Eclipse Jetty API Doc - v10.0.7)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":10,"i8":6,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract 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/AbstractSessionDataStore.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 AbstractSessionDataStore" class="title">Class AbstractSessionDataStore</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>org.eclipse.jetty.server.session.AbstractSessionDataStore</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>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="FileSessionDataStore.html" title="class in org.eclipse.jetty.server.session">FileSessionDataStore</a></code>, <code><a href="../../gcloud/session/GCloudSessionDataStore.html" title="class in org.eclipse.jetty.gcloud.session">GCloudSessionDataStore</a></code>, <code><a href="../../session/infinispan/InfinispanSessionDataStore.html" title="class in org.eclipse.jetty.session.infinispan">InfinispanSessionDataStore</a></code>, <code><a href="JDBCSessionDataStore.html" title="class in org.eclipse.jetty.server.session">JDBCSessionDataStore</a></code>, <code><a href="../../nosql/NoSqlSessionDataStore.html" title="class in org.eclipse.jetty.nosql">NoSqlSessionDataStore</a></code>, <code><a href="NullSessionDataStore.html" title="class in org.eclipse.jetty.server.session">NullSessionDataStore</a></code></dd>
</dl>
<hr>
<pre><a href="../../util/annotation/ManagedObject.html" title="annotation in org.eclipse.jetty.util.annotation">@ManagedObject</a>
public abstract class <span class="typeNameLabel">AbstractSessionDataStore</span>
extends <a href="../../util/component/ContainerLifeCycle.html" title="class in org.eclipse.jetty.util.component">ContainerLifeCycle</a>
implements <a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></pre>
<div class="block">AbstractSessionDataStore</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 <a href="SessionContext.html" title="class in org.eclipse.jetty.server.session">SessionContext</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_context">_context</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_gracePeriodSec">_gracePeriodSec</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="#_lastExpiryCheckTime">_lastExpiryCheckTime</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_lastOrphanSweepTime">_lastOrphanSweepTime</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_savePeriodSec">_savePeriodSec</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_GRACE_PERIOD_SEC">DEFAULT_GRACE_PERIOD_SEC</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#DEFAULT_SAVE_PERIOD_SEC">DEFAULT_SAVE_PERIOD_SEC</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.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()">AbstractSessionDataStore</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="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract 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>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#checkStarted()">checkStarted</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#cleanOrphans(long)">cleanOrphans</a></span>&#8203;(long&nbsp;timeLimit)</code></th>
<td class="colLast">
<div class="block">Remove all sessions for any context that expired at or before the given time.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract 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">Implemented by subclasses to resolve which sessions in this context
that are being managed by this node that should be expired.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract 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>abstract 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>abstract 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;before)</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>abstract <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>abstract 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="i9" 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="i10" 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="#getExpired(java.util.Set)">getExpired</a></span>&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates)</code></th>
<td class="colLast">
<div class="block">Called periodically, this method should search the data store
for sessions that have been expired for a 'reasonable' amount
of time.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getGracePeriodSec()">getGracePeriodSec</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSavePeriodSec()">getSavePeriodSec</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" 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="i14" 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="#load(java.lang.String)">load</a></span>&#8203;(java.lang.String&nbsp;id)</code></th>
<td class="colLast">
<div class="block">Read in session data.</div>
</td>
</tr>
<tr id="i15" 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="#newSessionData(java.lang.String,long,long,long,long)">newSessionData</a></span>&#8203;(java.lang.String&nbsp;id,
long&nbsp;created,
long&nbsp;accessed,
long&nbsp;lastAccessed,
long&nbsp;maxInactiveMs)</code></th>
<td class="colLast">
<div class="block">Create a new SessionData</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="#setGracePeriodSec(int)">setGracePeriodSec</a></span>&#8203;(int&nbsp;sec)</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="#setSavePeriodSec(int)">setSavePeriodSec</a></span>&#8203;(int&nbsp;savePeriodSec)</code></th>
<td class="colLast">
<div class="block">The minimum time in seconds between save operations.</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="#store(java.lang.String,org.eclipse.jetty.server.session.SessionData)">store</a></span>&#8203;(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">Store the session data.</div>
</td>
</tr>
<tr id="i19" 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.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#doStop()">doStop</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>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.server.session.SessionDataMap">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.server.session.<a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a></h3>
<code><a href="SessionDataMap.html#delete(java.lang.String)">delete</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.server.session.SessionDataStore">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.server.session.<a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></h3>
<code><a href="SessionDataStore.html#isPassivating()">isPassivating</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="DEFAULT_GRACE_PERIOD_SEC">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_GRACE_PERIOD_SEC</h4>
<pre>public static final&nbsp;int DEFAULT_GRACE_PERIOD_SEC</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.eclipse.jetty.server.session.AbstractSessionDataStore.DEFAULT_GRACE_PERIOD_SEC">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="DEFAULT_SAVE_PERIOD_SEC">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>DEFAULT_SAVE_PERIOD_SEC</h4>
<pre>public static final&nbsp;int DEFAULT_SAVE_PERIOD_SEC</pre>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../constant-values.html#org.eclipse.jetty.server.session.AbstractSessionDataStore.DEFAULT_SAVE_PERIOD_SEC">Constant Field Values</a></dd>
</dl>
</li>
</ul>
<a id="_context">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_context</h4>
<pre>protected&nbsp;<a href="SessionContext.html" title="class in org.eclipse.jetty.server.session">SessionContext</a> _context</pre>
</li>
</ul>
<a id="_gracePeriodSec">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_gracePeriodSec</h4>
<pre>protected&nbsp;int _gracePeriodSec</pre>
</li>
</ul>
<a id="_lastExpiryCheckTime">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_lastExpiryCheckTime</h4>
<pre>protected&nbsp;long _lastExpiryCheckTime</pre>
</li>
</ul>
<a id="_lastOrphanSweepTime">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_lastOrphanSweepTime</h4>
<pre>protected&nbsp;long _lastOrphanSweepTime</pre>
</li>
</ul>
<a id="_savePeriodSec">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>_savePeriodSec</h4>
<pre>protected&nbsp;int _savePeriodSec</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>AbstractSessionDataStore</h4>
<pre>public&nbsp;AbstractSessionDataStore()</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="doExists(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doExists</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;doExists&#8203;(java.lang.String&nbsp;id)
throws java.lang.Exception</pre>
<div class="block">Check if a session for the given id exists.</div>
<dl>
<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="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 abstract&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">Store the session data persistently.</div>
<dl>
<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="doLoad(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doLoad</h4>
<pre class="methodSignature">public abstract&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">Load the session from persistent store.</div>
<dl>
<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="doCheckExpired(java.util.Set,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doCheckExpired</h4>
<pre class="methodSignature">public abstract&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">Implemented by subclasses to resolve which sessions in this context
that are being managed by this node that should be expired.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>candidates</code> - the ids of sessions the SessionCache thinks has expired</dd>
<dd><code>time</code> - the time at which to check for expiry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the reconciled set of session ids that have been checked in the store</dd>
</dl>
</li>
</ul>
<a id="doGetExpired(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doGetExpired</h4>
<pre class="methodSignature">public abstract&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;doGetExpired&#8203;(long&nbsp;before)</pre>
<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="paramLabel">Parameters:</span></dt>
<dd><code>before</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 abstract&nbsp;void&nbsp;doCleanOrphans&#8203;(long&nbsp;time)</pre>
<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="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="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="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="cleanOrphans(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cleanOrphans</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;cleanOrphans&#8203;(long&nbsp;timeLimit)</pre>
<div class="block">Remove all sessions for any context that expired at or before the given time.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>timeLimit</code> - the time before which the sessions must have expired.</dd>
</dl>
</li>
</ul>
<a id="load(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>load</h4>
<pre class="methodSignature">public&nbsp;<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;load&#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="SessionDataMap.html#load(java.lang.String)">SessionDataMap</a></code></span></div>
<div class="block">Read in session data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataMap.html#load(java.lang.String)">load</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="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - identity of session to load</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the SessionData matching the id</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to load session data</dd>
</dl>
</li>
</ul>
<a id="store(java.lang.String,org.eclipse.jetty.server.session.SessionData)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>store</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;store&#8203;(java.lang.String&nbsp;id,
<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;data)
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataMap.html#store(java.lang.String,org.eclipse.jetty.server.session.SessionData)">SessionDataMap</a></code></span></div>
<div class="block">Store the session data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataMap.html#store(java.lang.String,org.eclipse.jetty.server.session.SessionData)">store</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="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - identity of session to store</dd>
<dd><code>data</code> - info of session to store</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code> - if unable to write session data</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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataStore.html#exists(java.lang.String)">exists</a></code>&nbsp;in interface&nbsp;<code><a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code></dd>
<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="getExpired(java.util.Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getExpired</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;getExpired&#8203;(java.util.Set&lt;java.lang.String&gt;&nbsp;candidates)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataStore.html#getExpired(java.util.Set)">SessionDataStore</a></code></span></div>
<div class="block">Called periodically, this method should search the data store
for sessions that have been expired for a 'reasonable' amount
of time.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataStore.html#getExpired(java.util.Set)">getExpired</a></code>&nbsp;in interface&nbsp;<code><a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>candidates</code> - if provided, these are keys of sessions that
the SessionDataStore thinks has expired and should be verified by the
SessionDataStore</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>set of session ids</dd>
</dl>
</li>
</ul>
<a id="newSessionData(java.lang.String,long,long,long,long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newSessionData</h4>
<pre class="methodSignature">public&nbsp;<a href="SessionData.html" title="class in org.eclipse.jetty.server.session">SessionData</a>&nbsp;newSessionData&#8203;(java.lang.String&nbsp;id,
long&nbsp;created,
long&nbsp;accessed,
long&nbsp;lastAccessed,
long&nbsp;maxInactiveMs)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataStore.html#newSessionData(java.lang.String,long,long,long,long)">SessionDataStore</a></code></span></div>
<div class="block">Create a new SessionData</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataStore.html#newSessionData(java.lang.String,long,long,long,long)">newSessionData</a></code>&nbsp;in interface&nbsp;<code><a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>id</code> - the id</dd>
<dd><code>created</code> - the timestamp when created</dd>
<dd><code>accessed</code> - the timestamp when accessed</dd>
<dd><code>lastAccessed</code> - the timestamp when last accessed</dd>
<dd><code>maxInactiveMs</code> - the max inactive time in milliseconds</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a new SessionData object</dd>
</dl>
</li>
</ul>
<a id="checkStarted()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>checkStarted</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;checkStarted()
throws java.lang.IllegalStateException</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalStateException</code></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="../../util/component/ContainerLifeCycle.html#doStart()">doStart</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><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="getGracePeriodSec()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getGracePeriodSec</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>="interval in secs to prevent too eager session scavenging",
<a href="../../util/annotation/ManagedAttribute.html#readonly()">readonly</a>=true)
public&nbsp;int&nbsp;getGracePeriodSec()</pre>
</li>
</ul>
<a id="setGracePeriodSec(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setGracePeriodSec</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setGracePeriodSec&#8203;(int&nbsp;sec)</pre>
</li>
</ul>
<a id="getSavePeriodSec()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSavePeriodSec</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>="min secs between saves",
<a href="../../util/annotation/ManagedAttribute.html#readonly()">readonly</a>=true)
public&nbsp;int&nbsp;getSavePeriodSec()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the savePeriodSec</dd>
</dl>
</li>
</ul>
<a id="setSavePeriodSec(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSavePeriodSec</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setSavePeriodSec&#8203;(int&nbsp;savePeriodSec)</pre>
<div class="block">The minimum time in seconds between save operations.
Saves normally occur every time the last request
exits as session. If nothing changes on the session
except for the access time and the persistence technology
is slow, this can cause delays.
<p>
By default the value is 0, which means we save
after the last request exists. A non zero value
means that we will skip doing the save if the
session isn't dirty if the elapsed time since
the session was last saved does not exceed this
value.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>savePeriodSec</code> - the savePeriodSec to set</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="../../util/component/AbstractLifeCycle.html#toString()">toString</a></code>&nbsp;in class&nbsp;<code><a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</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/AbstractSessionDataStore.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>