blob: 211e646c9f3dd6ef4ddc7c009f8aea7a157527ff [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>CachingSessionDataStore (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="CachingSessionDataStore (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/CachingSessionDataStore.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 CachingSessionDataStore" class="title">Class CachingSessionDataStore</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.CachingSessionDataStore</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>public class <span class="typeNameLabel">CachingSessionDataStore</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">CachingSessionDataStore
A SessionDataStore is a mechanism for (persistently) storing data associated with sessions.
This implementation delegates to a pluggable SessionDataStore for actually storing the
session data. It also uses a pluggable cache implementation in front of the
delegate SessionDataStore to improve performance: accessing most persistent store
technology can be expensive time-wise, so introducing a fronting cache
can increase performance. The cache implementation can either be a local cache,
a remote cache, or a clustered cache.
The implementation here will try to read first from the cache and fallback to
reading from the SessionDataStore if the session key is not found. On writes, the
session data is written first to the SessionDataStore, and then to the cache. On
deletes, the data is deleted first from the SessionDataStore, and then from the
cache. There is no transaction manager ensuring atomic operations, so it is
possible that failures can result in cache inconsistency.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.AbstractLifeCycle">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</a></h3>
<code><a href="../../util/component/AbstractLifeCycle.AbstractLifeCycleListener.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle.AbstractLifeCycleListener</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.Container">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Container.html" title="interface in org.eclipse.jetty.util.component">Container</a></h3>
<code><a href="../../util/component/Container.InheritedListener.html" title="interface in org.eclipse.jetty.util.component">Container.InheritedListener</a>, <a href="../../util/component/Container.Listener.html" title="interface in org.eclipse.jetty.util.component">Container.Listener</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.DumpableContainer.html" title="interface in org.eclipse.jetty.util.component">Dumpable.DumpableContainer</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="nested.classes.inherited.from.class.org.eclipse.jetty.util.component.LifeCycle">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/LifeCycle.html" title="interface in org.eclipse.jetty.util.component">LifeCycle</a></h3>
<code><a href="../../util/component/LifeCycle.Listener.html" title="interface in org.eclipse.jetty.util.component">LifeCycle.Listener</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected <a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_cache">_cache</a></span></code></th>
<td class="colLast">
<div class="block">The fronting cache</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>protected <a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#_store">_store</a></span></code></th>
<td class="colLast">
<div class="block">The actual store for the session data</div>
</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#RUNNING">RUNNING</a>, <a href="../../util/component/AbstractLifeCycle.html#STARTED">STARTED</a>, <a href="../../util/component/AbstractLifeCycle.html#STARTING">STARTING</a>, <a href="../../util/component/AbstractLifeCycle.html#STOPPED">STOPPED</a>, <a href="../../util/component/AbstractLifeCycle.html#STOPPING">STOPPING</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.html#KEY">KEY</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.server.session.SessionDataMap,org.eclipse.jetty.server.session.SessionDataStore)">CachingSessionDataStore</a></span>&#8203;(<a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a>&nbsp;cache,
<a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a>&nbsp;store)</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 session data</div>
</td>
</tr>
<tr id="i1" 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="i2" 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="i3" 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="i4" 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="i5" class="rowColor">
<td class="colFirst"><code><a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSessionDataMap()">getSessionDataMap</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSessionStore()">getSessionStore</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" 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="i8" class="altColor">
<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="i9" 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="#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="i10" 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="#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="i11" class="rowColor">
<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>
</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(org.eclipse.jetty.util.component.Container.Listener)">addEventListener</a>, <a href="../../util/component/ContainerLifeCycle.html#addManaged(org.eclipse.jetty.util.component.LifeCycle)">addManaged</a>, <a href="../../util/component/ContainerLifeCycle.html#contains(java.lang.Object)">contains</a>, <a href="../../util/component/ContainerLifeCycle.html#destroy()">destroy</a>, <a href="../../util/component/ContainerLifeCycle.html#dump()">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable,java.lang.String)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(java.lang.Appendable,java.lang.String,java.util.Collection...)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dump(org.eclipse.jetty.util.component.Dumpable)">dump</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpBeans(java.lang.Appendable,java.lang.String,java.util.Collection...)">dumpBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpObject(java.lang.Appendable,java.lang.Object)">dumpObject</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpObjects(java.lang.Appendable,java.lang.String,java.lang.Object...)">dumpObjects</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpStdErr()">dumpStdErr</a>, <a href="../../util/component/ContainerLifeCycle.html#dumpThis(java.lang.Appendable)">dumpThis</a>, <a href="../../util/component/ContainerLifeCycle.html#getBean(java.lang.Class)">getBean</a>, <a href="../../util/component/ContainerLifeCycle.html#getBeans()">getBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getBeans(java.lang.Class)">getBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getContainedBeans(java.lang.Class)">getContainedBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#getContainedBeans(java.lang.Class,java.util.Collection)">getContainedBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#isAuto(java.lang.Object)">isAuto</a>, <a href="../../util/component/ContainerLifeCycle.html#isManaged(java.lang.Object)">isManaged</a>, <a href="../../util/component/ContainerLifeCycle.html#isUnmanaged(java.lang.Object)">isUnmanaged</a>, <a href="../../util/component/ContainerLifeCycle.html#manage(java.lang.Object)">manage</a>, <a href="../../util/component/ContainerLifeCycle.html#removeBean(java.lang.Object)">removeBean</a>, <a href="../../util/component/ContainerLifeCycle.html#removeBeans()">removeBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#removeEventListener(org.eclipse.jetty.util.component.Container.Listener)">removeEventListener</a>, <a href="../../util/component/ContainerLifeCycle.html#setBeans(java.util.Collection)">setBeans</a>, <a href="../../util/component/ContainerLifeCycle.html#setStopTimeout(long)">setStopTimeout</a>, <a href="../../util/component/ContainerLifeCycle.html#start(org.eclipse.jetty.util.component.LifeCycle)">start</a>, <a href="../../util/component/ContainerLifeCycle.html#stop(org.eclipse.jetty.util.component.LifeCycle)">stop</a>, <a href="../../util/component/ContainerLifeCycle.html#unmanage(java.lang.Object)">unmanage</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBean(java.lang.Object,java.lang.Object)">updateBean</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBean(java.lang.Object,java.lang.Object,boolean)">updateBean</a>, <a href="../../util/component/ContainerLifeCycle.html#updateBeans(java.lang.Object%5B%5D,java.lang.Object%5B%5D)">updateBeans</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.AbstractLifeCycle">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/AbstractLifeCycle.html" title="class in org.eclipse.jetty.util.component">AbstractLifeCycle</a></h3>
<code><a href="../../util/component/AbstractLifeCycle.html#addLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">addLifeCycleListener</a>, <a href="../../util/component/AbstractLifeCycle.html#getState()">getState</a>, <a href="../../util/component/AbstractLifeCycle.html#getState(org.eclipse.jetty.util.component.LifeCycle)">getState</a>, <a href="../../util/component/AbstractLifeCycle.html#getStopTimeout()">getStopTimeout</a>, <a href="../../util/component/AbstractLifeCycle.html#isFailed()">isFailed</a>, <a href="../../util/component/AbstractLifeCycle.html#isRunning()">isRunning</a>, <a href="../../util/component/AbstractLifeCycle.html#isStarted()">isStarted</a>, <a href="../../util/component/AbstractLifeCycle.html#isStarting()">isStarting</a>, <a href="../../util/component/AbstractLifeCycle.html#isStopped()">isStopped</a>, <a href="../../util/component/AbstractLifeCycle.html#isStopping()">isStopping</a>, <a href="../../util/component/AbstractLifeCycle.html#removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">removeLifeCycleListener</a>, <a href="../../util/component/AbstractLifeCycle.html#start()">start</a>, <a href="../../util/component/AbstractLifeCycle.html#stop()">stop</a>, <a href="../../util/component/AbstractLifeCycle.html#toString()">toString</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.Dumpable">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.html" title="interface in org.eclipse.jetty.util.component">Dumpable</a></h3>
<code><a href="../../util/component/Dumpable.html#dumpSelf()">dumpSelf</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.Dumpable.DumpableContainer">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/Dumpable.DumpableContainer.html" title="interface in org.eclipse.jetty.util.component">Dumpable.DumpableContainer</a></h3>
<code><a href="../../util/component/Dumpable.DumpableContainer.html#isDumpable(java.lang.Object)">isDumpable</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.component.LifeCycle">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.eclipse.jetty.util.component.<a href="../../util/component/LifeCycle.html" title="interface in org.eclipse.jetty.util.component">LifeCycle</a></h3>
<code><a href="../../util/component/LifeCycle.html#addLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">addLifeCycleListener</a>, <a href="../../util/component/LifeCycle.html#isFailed()">isFailed</a>, <a href="../../util/component/LifeCycle.html#isRunning()">isRunning</a>, <a href="../../util/component/LifeCycle.html#isStarted()">isStarted</a>, <a href="../../util/component/LifeCycle.html#isStarting()">isStarting</a>, <a href="../../util/component/LifeCycle.html#isStopped()">isStopped</a>, <a href="../../util/component/LifeCycle.html#isStopping()">isStopping</a>, <a href="../../util/component/LifeCycle.html#removeLifeCycleListener(org.eclipse.jetty.util.component.LifeCycle.Listener)">removeLifeCycleListener</a>, <a href="../../util/component/LifeCycle.html#start()">start</a>, <a href="../../util/component/LifeCycle.html#stop()">stop</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="_store">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>_store</h4>
<pre>protected&nbsp;<a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a> _store</pre>
<div class="block">The actual store for the session data</div>
</li>
</ul>
<a id="_cache">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>_cache</h4>
<pre>protected&nbsp;<a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a> _cache</pre>
<div class="block">The fronting cache</div>
</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;(org.eclipse.jetty.server.session.SessionDataMap,org.eclipse.jetty.server.session.SessionDataStore)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CachingSessionDataStore</h4>
<pre>public&nbsp;CachingSessionDataStore&#8203;(<a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a>&nbsp;cache,
<a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a>&nbsp;store)</pre>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>cache</code> - the front cache to use</dd>
<dd><code>store</code> - the actual store for the the session data</dd>
</dl>
</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="getSessionStore()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSessionStore</h4>
<pre class="methodSignature">public&nbsp;<a href="SessionDataStore.html" title="interface in org.eclipse.jetty.server.session">SessionDataStore</a>&nbsp;getSessionStore()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the delegate session store</dd>
</dl>
</li>
</ul>
<a id="getSessionDataMap()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSessionDataMap</h4>
<pre class="methodSignature">public&nbsp;<a href="SessionDataMap.html" title="interface in org.eclipse.jetty.server.session">SessionDataMap</a>&nbsp;getSessionDataMap()</pre>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the fronting cache for session data</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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataMap.html#load(java.lang.String)"><code>SessionDataMap.load(java.lang.String)</code></a></dd>
</dl>
</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"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="SessionDataMap.html#delete(java.lang.String)">SessionDataMap</a></code></span></div>
<div class="block">Delete session data</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataMap.html#delete(java.lang.String)">delete</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 delete</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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataMap.html#delete(java.lang.String)"><code>SessionDataMap.delete(java.lang.String)</code></a></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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataStore.html#getExpired(java.util.Set)"><code>SessionDataStore.getExpired(Set)</code></a></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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataMap.html#store(java.lang.String,org.eclipse.jetty.server.session.SessionData)"><code>SessionDataMap.store(java.lang.String, org.eclipse.jetty.server.session.SessionData)</code></a></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>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="doStop()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>doStop</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;doStop()
throws java.lang.Exception</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../util/component/ContainerLifeCycle.html#doStop()">ContainerLifeCycle</a></code></span></div>
<div class="block">Stops the managed lifecycle beans in the reverse order they were added.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../util/component/ContainerLifeCycle.html#doStop()">doStop</a></code>&nbsp;in class&nbsp;<code><a href="../../util/component/ContainerLifeCycle.html" title="class in org.eclipse.jetty.util.component">ContainerLifeCycle</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="isPassivating()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isPassivating</h4>
<pre class="methodSignature">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="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="SessionDataStore.html#isPassivating()">isPassivating</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="returnLabel">Returns:</span></dt>
<dd>true if this store can passivate sessions, false otherwise</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataStore.html#isPassivating()"><code>SessionDataStore.isPassivating()</code></a></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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataStore.html#exists(java.lang.String)"><code>SessionDataStore.exists(java.lang.String)</code></a></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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataMap.html#initialize(org.eclipse.jetty.server.session.SessionContext)"><code>SessionDataMap.initialize(org.eclipse.jetty.server.session.SessionContext)</code></a></dd>
</dl>
</li>
</ul>
<a id="newSessionData(java.lang.String,long,long,long,long)">
<!-- -->
</a>
<ul class="blockListLast">
<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>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="SessionDataStore.html#newSessionData(java.lang.String,long,long,long,long)"><code>SessionDataStore.newSessionData(java.lang.String, long, long, long, long)</code></a></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/CachingSessionDataStore.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>