| <html><head> |
| <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
| <title>Chapter 36. Upgrading Jetty</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty"><link rel="up" href="jetty-ref-guide.html" title="Part V. Jetty Reference Guide"><link rel="prev" href="release-testing.html" title="Testing a Jetty Release"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><link rel="stylesheet" href="css/highlighter/foundation.css"><script src="js/highlight.pack.js"></script><script> |
| hljs.initHighlightingOnLoad(); |
| </script><link type="text/css" rel="stylesheet" href="css/font-awesome/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small"> |
| Version: 9.4.28-SNAPSHOT</span></td><td style="width: 50%"></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. Upgrading Jetty</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="release-testing.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a> </td><th width="60%" align="center">Part V. Jetty Reference Guide<br><a accesskey="p" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></th><td width="20%" align="right"> </td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at |
| <span class="website">www.webtide.com</span></a></h5><p> |
| private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... |
| scalability guidance for your apps and Ajax/Comet projects ... development services for sponsored feature development |
| </p></div><div class="chapter"><div class="titlepage"><div><div><h2 class="title"><a name="upgrading-jetty"></a>Chapter 36. Upgrading Jetty</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="upgrading-jetty.html#_upgrading_from_jetty_9_3_x_to_jetty_9_4_0">Upgrading from Jetty 9.3.x to Jetty 9.4.0</a></span></dt></dl></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_upgrading_from_jetty_9_3_x_to_jetty_9_4_0"></a>Upgrading from Jetty 9.3.x to Jetty 9.4.0</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="upgrading-jetty.html#_the_jetty_sh_script">The jetty.sh Script</a></span></dt><dt><span class="section"><a href="upgrading-jetty.html#_removed_classes">Removed Classes</a></span></dt><dt><span class="section"><a href="upgrading-jetty.html#_module_changes_in_jetty_9_4">Module Changes in Jetty 9.4</a></span></dt><dt><span class="section"><a href="upgrading-jetty.html#_session_management">Session Management</a></span></dt><dt><span class="section"><a href="upgrading-jetty.html#_servletcontainerinitializers">ServletContainerInitializers</a></span></dt></dl></div><p>The purpose of this guide is to assist users migrating from Jetty 9.3.x to 9.4.0. |
| It is not comprehensive, but covers many of the major changes included in the release that may prove as problem areas for users.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_the_jetty_sh_script"></a>The jetty.sh Script</h3></div></div></div><p>The file <code class="literal">jetty.sh</code>, typically used to start Jetty as a service in Linux/Unix machines underwent only small changes, such as the addition of <a class="link" href="https://wiki.debian.org/LSBInitScripts" target="_top">LSB tags</a>.</p><p>You can safely replace the <code class="literal">jetty.sh</code> file packaged with Jetty 9.3 with the version found in Jetty 9.4.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_removed_classes"></a>Removed Classes</h3></div></div></div><p><code class="literal">ConcurrentArrayQueue</code> was removed from use in Jetty 9.3 and the class has been removed entirely as part of Jetty 9.4.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_module_changes_in_jetty_9_4"></a>Module Changes in Jetty 9.4</h3></div></div></div><div class="informaltable"><table class="informaltable" border="1"><colgroup><col class="col_1"><col class="col_2"></colgroup><thead><tr><th align="left" valign="top">Jetty 9.3 Module</th><th align="left" valign="top">Jetty 9.4 Module</th></tr></thead><tbody><tr><td align="left" valign="top"><p><code class="literal">logging</code></p></td><td align="left" valign="top"><p><code class="literal">console-capture</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">infinispan</code></p></td><td align="left" valign="top"><p><code class="literal">session-store-infinispan-embedded</code> or <code class="literal">session-store-infinispan-remote</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">jdbc-sessions</code></p></td><td align="left" valign="top"><p><code class="literal">session-store-jdbc</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">gcloud-memcached-sessions</code>, <code class="literal">gcloud-session-idmgr</code> and <code class="literal">gcloud-sessions</code></p></td><td align="left" valign="top"><p><code class="literal">session-store-gcloud</code> and <code class="literal">session-store-cache</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">nosql</code></p></td><td align="left" valign="top"><p><code class="literal">session-store-mongo</code></p></td></tr></tbody></table></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_logging_modules"></a>Logging Modules</h4></div></div></div><p>The module <code class="literal">logging</code> is no longer available in Jetty 9.4.</p><p>The logging module structure present in Jetty 9.3 has been replaced with a more fine-grained structure in Jetty 9.4, so that you have now more choices available that are also easier to configure.</p><p>The migration path is different depending on whether you have completely customized this module or not.</p><p>If you have a Jetty 9.3 installation, and you have both <code class="literal">$jetty.base/modules/logging.mod</code> and <code class="literal">$jetty.base/etc/jetty-logging.xml</code>, then this module is local to your <code class="literal">$jetty.base</code> setup and will be used by Jetty 9.4 as before. |
| No changes are required for your implementation.</p><p>If either <code class="literal">$jetty.base/modules/logging.mod</code> or <code class="literal">$jetty.base/etc/jetty-logging.xml</code> are missing, then you were relying on those present in <code class="literal">$jetty.home</code>, which were present in Jetty 9.3, but are no longer available in Jetty 9.4.</p><p>The Jetty 9.3 <code class="literal">logging</code> module has been renamed to <code class="literal">console-capture</code> in Jetty 9.4. |
| You need to open your Jetty 9.3 <code class="literal">start.ini</code> and replace the references to the <code class="literal">logging</code> modules with <code class="literal">console-capture</code>.</p><p>For example, in an existing Jetty 9.3 <code class="literal">start.ini</code> file the module declaration for logging would look like this:</p><div class="screenexample"><pre class="screen">--module=logging |
| jetty.logging.retainDays=7</pre></div><p>In 9.4, it should be replaced by:</p><div class="screenexample"><pre class="screen">--module=console-capture |
| jetty.console-capture.retainDays=7</pre></div><p>The properties that may be present in your Jetty 9.3’s <code class="literal">start.ini</code>, such as <code class="literal">jetty.logging.retainDays</code> will still be working in Jetty 9.4, but a warning will be printed at Jetty 9.4 startup, saying to replace them with correspondent <code class="literal">jetty.console-capture.*</code> properties such as <code class="literal">jetty.console-capture.retainDays</code>.</p><p>For information on logging modules in the Jetty 9.4 architecture please see the section on <a class="link" href="configuring-logging-modules.html" title="Jetty Logging Integrations (SLF4J, Log4j, Logback, JCL, JUL)">configuring logging modules.</a></p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_session_management"></a>Session Management</h3></div></div></div><p>Session management received a significant overhaul in Jetty 9.4. |
| Session functionality has been refactored to promote code-reuse, easier configuration and easier customization. |
| Whereas previously users needed to edit xml configuration files, in Jetty 9.4 all session behavior is controlled by properties that are exposed by the various session modules. |
| Users now configure session management by selecting a composition of session modules.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_change_overview"></a>Change Overview</h4></div></div></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">SessionIdManager</span></dt><dd>Previously there was a different class of SessionIdManager - with different configuration options - depending upon which type of clustering technology chosen. |
| In Jetty 9.4, there is only one type, the <a class="link" href="http://www.eclipse.org/jetty/javadoc/9.4.28-SNAPSHOT/org/eclipse/jetty/server/session/DefaultSessionIdManager.html" target="_top">org.eclipse.jetty.server.session.DefaultSessionIdManager</a>.</dd><dt><span class="term">SessionManager</span></dt><dd><p class="simpara">Previously, there was a different class of SessionManager depending upon which the type of clustering technology chosen. |
| In Jetty 9.4 we have removed the SessionManager class and split its functionality into different, more easily extensible and composable classes:</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">General setters</span></dt><dd>All of the common setup of sessions such as the maxInactiveInterval and session cookie-related configuration has been moved to the <a class="link" href="http://www.eclipse.org/jetty/javadoc/9.4.28-SNAPSHOT/org/eclipse/jetty/server/session/SessionHandler.html" target="_top">org.eclipse.jetty.server.session.SessionHandler</a></dd></dl></div></dd></dl></div><div class="informaltable"><table class="informaltable" border="1"><colgroup><col class="col_1"><col class="col_2"></colgroup><thead><tr><th align="left" valign="top">9.3 SessionManager</th><th align="left" valign="top">9.4 SessionHandler</th></tr></thead><tbody><tr><td align="left" valign="top"><p><code class="literal">setMaxInactiveInterval(sec)</code></p></td><td align="left" valign="top"><p><code class="literal">setMaxInactiveInterval(sec)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setSessionCookie(String)</code></p></td><td align="left" valign="top"><p><code class="literal">setSessionCookie(String)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setRefreshCookieAge(sec)</code></p></td><td align="left" valign="top"><p><code class="literal">setRefreshCookieAge(sec)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setSecureRequestOnly(boolean)</code></p></td><td align="left" valign="top"><p><code class="literal">setSecureRequestOnly(boolean)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setSessionIdPathParameterName(String)</code></p></td><td align="left" valign="top"><p><code class="literal">setSessionIdPathParameterName(String)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setSessionTrackingModes(Set<SessionTrackingMode>)</code></p></td><td align="left" valign="top"><p><code class="literal">setSessionTrackingModes(Set<SessionTrackingMode>)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setHttpOnly(boolean)</code></p></td><td align="left" valign="top"><p><code class="literal">setHttpOnly(boolean)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setUsingCookies(boolean)</code></p></td><td align="left" valign="top"><p><code class="literal">setUsingCookies(boolean)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">setCheckingRemoteSessionIdEncoding(boolean)</code></p></td><td align="left" valign="top"><p><code class="literal">setCheckingRemoteSessionIdEncoding(boolean)</code></p></td></tr></tbody></table></div><div class="variablelist"><dl class="variablelist"><dt><span class="term">Persistence</span></dt><dd>In Jetty 9.3 <code class="literal">SessionManagers</code> (and sometimes <code class="literal">SessionIdManagers</code>) implemented the persistence mechanism. |
| In Jetty 9.4 we have moved this functionality into the <a class="link" href="http://www.eclipse.org/jetty/javadoc/9.4.28-SNAPSHOT/org/eclipse/jetty/server/session/SessionDataStore.html" target="_top"><code class="literal">org.eclipse.jetty.server.session.SessionDataStore</code></a>.</dd><dt><span class="term">Session cache</span></dt><dd>In Jetty 9.3 the <code class="literal">SessionManager</code> held a map of session objects in memory. |
| In Jetty 9.4 this has been moved into the new <a class="link" href="http://www.eclipse.org/jetty/javadoc/9.4.28-SNAPSHOT/org/eclipse/jetty/server/session/SessionCache.html" target="_top"><code class="literal">org.eclipse.jetty.server.session.SessionCache</code></a> interface.</dd></dl></div><p>For more information, please refer to the documentation on <a class="link" href="session-management.html#jetty-sessions-architecture" title="Session Architecture">Jetty Session Architecture.</a></p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_default_sessions"></a>Default Sessions</h4></div></div></div><p>As with earlier versions of Jetty, if you do not explicitly configure any session modules, the default session infrastructure will be enabled. |
| In previous versions of Jetty this was referred to as "hash" session management. |
| The new default provides similar features to the old hash session management:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">A session scavenger thread that runs every 10mins and removes expired sessions</li><li class="listitem">A session id manager that generates unique session ids and handles session id sharing during context forwarding</li><li class="listitem">An in-memory cache of session objects.</li></ul></div><p>Requests for the same session in the same context share the same session object. |
| Session objects remain in the cache until they expire or are explicitly invalidated.</p><p>If you wish to configure the default setup further, enable the <code class="literal">session-cache-hash</code> module.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>As Session objects do not persist beyond a server restart, there are no compatibility issues.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_sessions_using_the_filesystem"></a>Sessions using the Filesystem</h4></div></div></div><p>In earlier versions of Jetty, persisting sessions to the local filesystem was an option of the "hash" session manager. |
| In Jetty 9.4 this has been refactored to its own configurable module <code class="literal">session-store-file</code>.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored to files by earlier versions of jetty are not compatible with jetty-9.4 sessions. |
| Here is a comparison of file formats, note that the file contents are listed in order of file output:</p><div class="informaltable"><table class="informaltable" border="1"><colgroup><col class="col_1"><col class="col_2"></colgroup><thead><tr><th align="left" valign="top">Jetty 9.3</th><th align="left" valign="top">Jetty 9.4</th></tr></thead><tbody><tr><td align="left" valign="top"><p>File name: <code class="literal">sessionid</code></p></td><td align="left" valign="top"><p>File name: <code class="literal">expirytime_contextpath_vhost_sessionid</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">sessionid (utf)</code></p></td><td align="left" valign="top"><p><code class="literal">sessionid (utf)</code></p></td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">contextpath (utf)</code></p></td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">vhost (utf)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">nodeid (utf)</code></p></td><td align="left" valign="top"><p><code class="literal">lastnode (utf)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">createtime (long)</code></p></td><td align="left" valign="top"><p><code class="literal">createtime (long)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">accessed (long)</code></p></td><td align="left" valign="top"><p><code class="literal">accessed (long)</code></p></td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">lastaccessed (long)</code></p></td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">cookiesettime (long)</code></p></td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">expiry (long)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">requests (int)</code></p></td><td align="left" valign="top"> </td></tr><tr><td align="left" valign="top"> </td><td align="left" valign="top"><p><code class="literal">maxInactive (long)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">attributes size (int)</code></p></td><td align="left" valign="top"><p><code class="literal">attributes size (int)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">attributes serialized (obj)</code></p></td><td align="left" valign="top"><p><code class="literal">attributes serialized (obj)</code></p></td></tr><tr><td align="left" valign="top"><p><code class="literal">maxInactive (long)</code></p></td><td align="left" valign="top"> </td></tr></tbody></table></div><div class="blockquote"><blockquote class="blockquote"><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="fa fa-asterisk" aria-hidden="true"></i> Note</h3><p>Session data is now only loaded when requested. |
| Previous functionality such as <code class="literal">setLazyLoad</code> has been removed.</p></div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_jdbc_sessions"></a>JDBC Sessions</h4></div></div></div><p>As with earlier versions of Jetty, sessions may be persisted to a relational database. |
| Enable the <code class="literal">session-store-jdbc</code> module.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored to the database by earlier versions of jetty are not compatible with jetty-9.4 sessions. |
| The incompatibility is minor: in jetty-9.4 the <code class="literal">rowid</code> primary key column is no longer used, and the primary key is a composite of <code class="literal">(sessionid,contextpath,vhost)</code> columns.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_nosql_sessions"></a>NoSQL Sessions</h4></div></div></div><p>As with earlier versions of Jetty, sessions may be persisted to a document database. |
| Jetty supports the Mongo document database. |
| Enable the <code class="literal">session-store-mongo</code> module.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored to mongo by earlier versions of jetty are not compatible with jetty-9.4 sessions. |
| The key for each subdocument that represents the session information for a context is different between jetty-9.3 and 9.4:</p><div class="informaltable"><table class="informaltable" border="1"><colgroup><col class="col_1"><col class="col_2"></colgroup><thead><tr><th align="left" valign="top">Jetty 9.3</th><th align="left" valign="top">Jetty 9.4</th></tr></thead><tbody><tr><td align="left" valign="top"><p>Each context key is: vhost+context+path, where empty vhosts="::" and root context = "*" and / is replaced by _</p></td><td align="left" valign="top"><p>Each context key is: vhost:contextpath, where empty vhosts="0_0_0_0" and root context = "" and / replaced by _</p></td></tr><tr><td align="left" valign="top"><p>eg "::/contextA"</p></td><td align="left" valign="top"><p>eg " 0_0_0_0:_contextA"</p></td></tr></tbody></table></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_infinispan_sessions"></a>Infinispan Sessions</h4></div></div></div><p>As with earlier versions of Jetty, sessions may be clustered via Infinispan to either an in-process or remote infinispan instance. |
| Enable the <code class="literal">session-store-infinispan</code> module.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored in infinispan by jetty-9.3 are incompatible with jetty-9.4. |
| In Jetty 9.3 the serialized object stored to represent the session data was <code class="literal">org.eclipse.jetty.session.infinispan.SerializableSessionData</code>. |
| In Jetty 9.4 the serialized object is <code class="literal">org.eclipse.jetty.serer.session.SessionData</code>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_gcloud_datastore"></a>GCloud Datastore</h4></div></div></div><p>As with earlier versions of Jetty, sessions may be persisted to Google’s GCloud Datastore. |
| Enable the <code class="literal">session-store-gcloud</code> module.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored into GCloud Datastore by Jetty 9.3 are <span class="strong"><strong>incompatible</strong></span> with Jetty 9.4, although the incompatibility is trivial: the name of the session id entity property has changed:</p><div class="informaltable"><table class="informaltable" border="1"><colgroup><col class="col_1"><col class="col_2"></colgroup><thead><tr><th align="left" valign="top">Jetty 9.3</th><th align="left" valign="top">Jetty 9.4</th></tr></thead><tbody><tr><td align="left" valign="top"><p>Kind: <code class="literal">GCloudSession</code></p></td><td align="left" valign="top"><p>Kind: <code class="literal">GCloudSession</code></p></td></tr><tr><td align="left" valign="top"><p>key: <code class="literal">contextpath_vhost_sessionid</code></p></td><td align="left" valign="top"><p>key: <code class="literal">contextpath_vhost_sessionid</code></p></td></tr><tr><td align="left" valign="top"><p><span class="strong"><strong>"clusterId"</strong></span>: <code class="literal">sessionId</code></p></td><td align="left" valign="top"><p><span class="strong"><strong>"id"</strong></span>: <code class="literal">sessionId</code></p></td></tr><tr><td align="left" valign="top"><p>"contextPath" : <code class="literal">contextpath</code></p></td><td align="left" valign="top"><p>"contextPath": <code class="literal">contextpath</code></p></td></tr><tr><td align="left" valign="top"><p>"vhost" : <code class="literal">vhost</code></p></td><td align="left" valign="top"><p>"vhost": <code class="literal">vhost</code></p></td></tr><tr><td align="left" valign="top"><p>"accessed": <code class="literal">accesstime</code></p></td><td align="left" valign="top"><p>"accessed": <code class="literal">accesstime</code></p></td></tr><tr><td align="left" valign="top"><p>"lastAccessed": <code class="literal">lastaccesstime</code></p></td><td align="left" valign="top"><p>"lastAccessed": <code class="literal">lastaccesstime</code></p></td></tr><tr><td align="left" valign="top"><p>"createTime": <code class="literal">createtime</code></p></td><td align="left" valign="top"><p>"createTime": <code class="literal">createtime</code></p></td></tr><tr><td align="left" valign="top"><p>"cookieSetTime": <code class="literal">cookiesettime</code></p></td><td align="left" valign="top"><p>"cookieSetTime": <code class="literal">cookiesettime</code></p></td></tr><tr><td align="left" valign="top"><p>"lastNode": <code class="literal">lastnode</code></p></td><td align="left" valign="top"><p>"lastNode": <code class="literal">lastnode</code></p></td></tr><tr><td align="left" valign="top"><p>"expiry": <code class="literal">expiry</code></p></td><td align="left" valign="top"><p>"expiry": <code class="literal">expiry</code></p></td></tr><tr><td align="left" valign="top"><p>"maxInactive": <code class="literal">maxInactive</code></p></td><td align="left" valign="top"><p>"maxInactive": <code class="literal">maxInactive</code></p></td></tr><tr><td align="left" valign="top"><p>"attributes": <code class="literal">blob</code></p></td><td align="left" valign="top"><p>"attributes": <code class="literal">blob</code></p></td></tr></tbody></table></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_gcloud_datastore_with_memcached"></a>GCloud Datastore with Memcached</h4></div></div></div><p>As with earlier versions of Jetty, sessions can be both persisted to Google’s GCloud Datastore, and cached into Memcached for faster access. |
| Enable the <code class="literal">session-store-gcloud</code> and <code class="literal">session-store-cache</code> modules.</p><p><span class="strong"><strong>Compatibility</strong></span></p><p>Sessions stored into Memcached by earlier versions of jetty are incompatible with Jetty 9.4. |
| Previous versions of jetty stored <code class="literal">org.eclipse.jetty.gcloud.memcached.session.SerializableSessionData</code> whereas Jetty 9.4 stores <code class="literal">org.eclipse.jetty.server.session.SessionData</code>.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_servletcontainerinitializers"></a>ServletContainerInitializers</h3></div></div></div><p>As of Jetty-9.4.4, unless the <code class="literal">web.xml</code> is version 3.0 or greater, only <code class="literal">ServletContainerInitializers</code> that are on the container classpath will be discovered. |
| Users wishing to use <code class="literal">ServletContainerInitializers</code> from within the webapp with older versions of <code class="literal">web.xml</code> must either upgrade their <code class="literal">web.xml</code> version, or call <code class="literal">WebAppContext.setConfigurationDiscovered(true)</code> either programmatically or in xml. |
| Upgrading the <code class="literal">web.xml</code> version is preferable.</p></div></div></div><script type="text/javascript"> |
| SyntaxHighlighter.all() |
| </script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-testing.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a> </td><td width="20%" align="center"><a accesskey="u" href="jetty-ref-guide.html"><i class="fa fa-chevron-up" aria-hidden="true"></i> Top</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">Testing a Jetty Release </td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout"> |
| See an error or something missing? |
| <span class="callout"><a href="http://github.com/eclipse/jetty.project">Contribute to this documentation at |
| <span class="website"><i class="fa fa-github" aria-hidden="true"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2020-03-10)</i></span></div></p></body></html> |