Jetty/Howto/SessionIds
Introduction
The following configuration can be applied to modify the session characteristics of a web application:
Steps
Init Parameters
Context Parameter Name | Default Value | Description |
org.eclipse.jetty.servlet.SessionCookie | JSESSIONID | Session cookie name defaults to JSESSIONID, but can be set for a particular webapp with this context param. |
org.eclipse.jetty.servlet.SessionIdPathParameterName | jsessionid | Session URL parameter name. Defaults to jsessionid, but can be set for a particular webapp with this context param. Set to "none" to disable URL rewriting. |
org.eclipse.jetty.servlet.SessionDomain | - | Session Domain. If this property is set as a ServletContext param, then it is used as the domain for session cookies.If it is not set, then no domain is specified for the session cookie. |
org.eclipse.jetty.servlet.SessionPath | - | Session Path. If this property is set as a ServletContext param, then it is used as the path for the session cookie. If it is not set, then the context path is used as the path for the cookie. |
org.eclipse.jetty.servlet.MaxAge | -1 | Session Max Age. If this property is set as a ServletContext param, then it is used as the max age for the session cookie. If it is not set, then a max age of -1 is used. |
org.eclipse.jetty.servlet.CheckingRemoteSessionIdEncoding | false |
Example
The above can either be set as <context-param>s in a web application's WEB-INF/web.xml file like so:
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> ... <context-param> <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name> <param-value>XSESSIONID</param-value> </context-param> <context-param> <param-name>org.eclipse.jetty.servlet.SessionIdPathParameterName</param-name> <param-value>xsessionid</param-value> </context-param> ... </web-app>
or, they can be configured on a web application, either in code, or in a Jetty context xml file equivalent:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/test</Set> <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set> ... <Call name="setInitParameter"> <Arg>org.eclipse.jetty.servlet.SessionCookie</Arg> <Arg>XSESSIONID</Arg> </Call> <Call name="setInitParameter"> <Arg>org.eclipse.jetty.servlet.SessionIdPathParameterName</Arg> <Arg>xsessionid</Arg> </Call> </Configure>
or they can be configured directly on a SessionManager instance, either in code or the equivalent in xml:
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath">/test</Set> <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/test</Set> ... <Get name="sessionHandler"> <Set name="sessionManager"> <New class="org.eclipse.jetty.server.session.HashSessionManager"> <Set name="sessionCookie">XSESSIONID</Set> <Set name="sessionIdPathParameterName">xsessionid</Set> </New> </Set> </Get> </Configure>
To see more about params look at the class org.eclipse.jetty.server.SessionManager source : http://download.eclipse.org/jetty/stable-7/xref/org/eclipse/jetty/server/SessionManager.html
Additional Resources
For more information, please see the Session Clustering tutorial.