Configuring the session timeout

Issue Summary

This article explains how to configure the session timeout value in the xMatters web application.

WARNING

Setting the session timeout to "never expire" can cause performance issues over time and could ultimately lead to server failures due to excessive memory consumption. Security is also a concern as long-lived sessions can provide an access point for malicious activity. To prevent these issues, it is recommended that you set the timeout to a short period (e.g., 30 minutes) .

Resolution

The WebUI session time out is specified in an XML configuration file called the deployment descriptor. The name of this file is web.xml. You can find this file installed under/webserver/webapps/cocoon/WEB-INF directory.The session timeout is specified in minutes; a value of "0" means the session will never timeout. When the session timeout value is not specified, it defaults to 30 minutes. To change the session timeout, locate the following text and modify the value (add this text if it is not already present in the file):

<session-config>  
  <session-timeout>30</session-timeout>  
</session-config>

NOTE: This tag must be specified in the correct location in the deployment descriptor, which is defined by its DTD. This can be found on the Java Sun website at http://java.sun.com/dtd/web-app_2_3.dtd. This file indicates that for version 2.3 of the specification that the session-config tag must be specified between the servlet-mapping and the mime-mapping tags.

IMPORTANT NOTE:

The order of the xml tags in the deployment descriptor is extremely important. If it is specified incorrectly, it will cause the application to fail on start up.  If the deployment descriptor is incorrect,  the client will see a "404 - Page Not Found" error in the browser window.

Sample Deployment Descriptor

This is an example of an xMatters web application deployment descriptor with the embedded session-config tag.

Note: This is provided as an illustration only.

<span><?xml version="1.0" encoding="UTF-8"?>  
<!--  
Copyright 1999-2004 The Apache Software Foundation  
  
Licensed under the Apache License, Version 2.0 (the "License");  
you may not use this file except in compliance with the License.  
You may obtain a copy of the License at  
  
http://www.apache.org/licenses/LICENSE-2.0 
  
Unless required by applicable law or agreed to in writing, software  
distributed under the License is distributed on an "AS IS" BASIS,  
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
See the License for the specific language governing permissions and  
limitations under the License.  
-->  
  
<!--+  
| This is the Cocoon web-app configurations file  
+-->  
  
<!DOCTYPE web-app  
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
"http://java.sun.com/dtd/web-app_2_3.dtd">  
  
<web-app>  
  
  
<!-- Context Configuration ========================================== -->  
  
<context-param>  
<param-name>contextConfigLocation</param-name>  
<param-value>  
<!--classpath:resources/spring/integration/applicationContext-acegi-security.xml-->  
classpath:resources/spring/integration/actionRegistryContext.xml  
classpath:resources/spring/integration/webUIContext.xml  
classpath:resources/spring/integration/webTransIsoApplicationContext.xml  
classpath:resources/spring/integration/schUtilityContext.xml  
</param-value>  
</context-param>  
  
<filter>  
<filter-name>OpenSessionInViewFilter</filter-name>  
<filter-class>com.invoqsystems.apex.web.cocoon.filter.OpenSessionInViewFilter</filter-class>  
</filter>  
  
  
<filter-mapping>  
<filter-name>OpenSessionInViewFilter</filter-name>  
<url-pattern>/*</url-pattern>  
</filter-mapping>  
  
<listener>  
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
</listener>  
  
  
<!-- Servlet Configuration ========================================== -->  
  
<servlet>  
<servlet-name>Cocoon</servlet-name>  
<display-name>Cocoon</display-name>  
<description>Cocoon</description>  
  
<!-- 
The regular servlet class (trusts the servlet container classloader) 
-->  
<servlet-class>org.apache.cocoon.servlet.CocoonServlet</servlet-class>  
  
<!--  
This parameter tells cocoon to set the thread's context classloader to  
its own classloader. If you experience strange classloader issues,  
try setting this parameter to "true" or using ParanoidCocoonServlet.  
-->  
<init-param>  
<param-name>init-classloader</param-name>  
<param-value>true</param-value>  
</init-param>  
  
<!--  
This parameter points to the main configuration file for Cocoon.  
Note that the path is specified in absolute notation but it will be  
resolved relative to the servlets webapp context path  
-->  
<init-param>  
<param-name>configurations</param-name>  
<param-value>/WEB-INF/cocoon.xconf</param-value>  
</init-param>  
  
<!--  
The forbidden level for deprectation messages. DEBUG forbids all deprecations (strict mode)  
and FATAL_ERROR allows all (tolerant mode). Default is ERROR, allowing up to WARN.  
See org.apache.util.Deprecation for more details.  
-->  
<init-param>  
<param-name>forbidden-deprecation-level</param-name>  
<param-value>ERROR</param-value>  
</init-param>  
  
<!--  
This parameter switches the logging system from LogKit to Log4J for Cocoon.  
Log4J has to be configured already.  
-->  
<init-param>  
<param-name>logger-class</param-name>  
<param-value>org.apache.avalon.excalibur.logger.Log4JLoggerManager</param-value>  
</init-param>  
  
<!--  
If you want to configure log4j using Cocoon, then you can define  
an XML configuration file here. You can use the usual log4j property  
substituation mechanism, e.g. ${context-root} is replaced by the  
context root of this web application etc.  
You can configure the log4j configuration even if you use LogKit  
for Cocoon logging. You can use this to configure third party code  
for example.  
-->  
<init-param>  
<param-name>log4j-config</param-name>  
<param-value>/WEB-INF/log4j.xconf</param-value>  
</init-param>  
  
<!--  
This parameter indicates the category id of the logger from the LogKit  
configuration used by the CocoonServlet.  
-->  
<init-param>  
<param-name>servlet-logger</param-name>  
<param-value>access</param-value>  
</init-param>  
  
<!--  
This parameter indicates the category id of the logger from the LogKit  
management configuration for the Cocoon engine.  
This logger is used for all components described in the cocoon.xconf  
and sitemap.xmap file not having specified a logger with the  
logger="..." attribute in the component configuration file.  
-->  
<init-param>  
<param-name>cocoon-logger</param-name>  
<param-value>core</param-value>  
</init-param>  
  
<!--  
This parameter indicates the log level to use throughout startup of the  
system. As soon as the logkit.xconf the setting of the logkit.xconf  
configuration is used instead! Only for startup and if the logkit.xconf is  
not readable/available this log level is of importance.  
  
Available levels are:  
DEBUG: prints all level of log messages.  
INFO: prints all level of log messages except DEBUG ones.  
WARN: prints all level of log messages except DEBUG and INFO ones.  
ERROR: prints all level of log messages except DEBUG, INFO and WARN ones.  
FATAL_ERROR: prints only log messages of this level  
-->  
<init-param>  
<param-name>log-level</param-name>  
<param-value>WARN</param-value>  
</init-param>  
  
<!--  
Allow reinstantiating (reloading) of the cocoon instance. If this is  
set to "yes" or "true", a new cocoon instance can be created using  
the request parameter "cocoon-reload". It also enables that Cocoon is  
reloaded when cocoon.xconf changes. Default is no for security reasons.  
-->  
<init-param>  
<param-name>allow-reload</param-name>  
<param-value>no</param-value>  
</init-param>  
  
<!--  
This parameter is used to list classes that should be loaded at  
initialization time of the servlet. For example, JDBC Drivers used need to  
be named here. Additional entries may be inserted here during build  
depending on your build properties.  
-->  
<init-param>  
<param-name>load-class</param-name>  
<param-value>  
<!-- For parent ComponentManager sample:  
org.apache.cocoon.samples.parentcm.Configurator -->  
<!-- For IBM WebSphere:  
com.ibm.servlet.classloader.Handler -->  
</param-value>  
</init-param>  
  
<!--  
Causes all files in multipart requests to be processed.  
Default is false for security reasons.  
Unsupported values will be interpreted as false.  
-->  
<init-param>  
<param-name>enable-uploads</param-name>  
<param-value>true</param-value>  
</init-param>  
  
<!--  
Causes all files in multipart requests to be saved to upload-dir.  
Default is true for security reasons.  
Unsupported values will be interpreted as false.  
-->  
<init-param>  
<param-name>autosave-uploads</param-name>  
<param-value>true</param-value>  
</init-param>  
  
<!--  
Specify handling of name conflicts when saving uploaded files to disk.  
Acceptable values are deny, allow, rename (default). Files are renamed  
x_filename where x is an integer value incremented to make the new  
filename unique.  
-->  
<init-param>  
<param-name>overwrite-uploads</param-name>  
<param-value>rename</param-value>  
</init-param>  
  
<!--  
Whether or not the X-Cocoon-Version response header will be included.  
This is true by default, but there may be some circumstances when it  
is not desired (e.g. "information hiding" for added security, or if  
using jsp:include with Cocoon-generated pages produces a "response is  
already committed" error).  
-->  
<init-param>  
<param-name>show-cocoon-version</param-name>  
<param-value>true</param-value>  
</init-param>  
  
<!--  
If true or not set, this class will try to catch and handle all Cocoon  
exceptions. If false, it will rethrow them to the servlet container.  
-->  
<init-param>  
<param-name>manage-exceptions</param-name>  
<param-value>true</param-value>  
</init-param>  
  
<!--  
If true, Avalon Excalibur instrumentation will be enabled on all  
Instrumentable components with Cocoon and your Cocoon application.  
-->  
<init-param>  
<param-name>enable-instrumentation</param-name>  
<param-value>false</param-value>  
</init-param>  
  
<!--  
This defines the location of the instrument manager configuration, only  
used if the init-param enable-instrumentation is enabled.  
-->  
<init-param>  
<param-name>instrumentation-config</param-name>  
<param-value>/WEB-INF/instrumentation.xconf</param-value>  
</init-param>  
  
<!--  
Set encoding used by the container. If not set the ISO-8859-1 encoding  
will be assumed.  
Since the servlet specification requires that the ISO-8859-1 encoding  
is used (by default), you should never change this value unless  
you have a buggy servlet container.  
-->  
<init-param>  
<param-name>container-encoding</param-name>  
<param-value>ISO-8859-1</param-value>  
</init-param>  
  
<!--  
Set form encoding. This will be the character set used to decode request  
parameters. If not set the ISO-8859-1 encoding will be assumed.  
-->  
<init-param>  
<param-name>form-encoding</param-name>  
<param-value>UTF-8</param-value>  
</init-param>  
  
<!--  
This parameter allows you to startup Cocoon2 immediately after startup  
of your servlet engine.  
-->  
<load-on-startup>1</load-on-startup>  
</servlet>  
  
  
<!-- ==================================================================== -->  
<!-- JSP Servlet -->  
<!-- This is the jasper JSP servlet from the jakarta project -->  
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->  
<!-- The JSP page compiler and execution servlet, which is the mechanism -->  
<!-- used by Tomcat to support JSP pages. Traditionally, this servlet -->  
<!-- is mapped to URL patterh "*.jsp". This servlet supports the -->  
<!-- following initialization parameters (default values are in square -->  
<!-- brackets): -->  
<!-- -->  
<!-- checkInterval If development is false and reloading is true, -->  
<!-- background compiles are enabled. checkInterval -->  
<!-- is the time in seconds between checks to see -->  
<!-- if a JSP page needs to be recompiled. [300] -->  
<!-- -->  
<!-- compiler Which compiler Ant should use to compile JSP -->  
<!-- pages. See the Ant documenation for more -->  
<!-- information. [javac] -->  
<!-- -->  
<!-- classdebuginfo Should the class file be compiled with -->  
<!-- debugging information? [true] -->  
<!-- -->  
<!-- classPath What class path should I use while compiling -->  
<!-- generated servlets? [Created dynamically -->  
<!-- based on the current web application] -->  
<!-- -->  
<!-- development Is Jasper used in development mode (will check -->  
<!-- for JSP modification on every access)? [true] -->  
<!-- -->  
<!-- enablePooling Determines whether tag handler pooling is -->  
<!-- enabled [true] -->  
<!-- -->  
<!-- fork Tell Ant to fork compiles of JSP pages so that -->  
<!-- a separate JVM is used for JSP page compiles -->  
<!-- from the one Tomcat is running in. [true] -->  
<!-- -->  
<!-- ieClassId The class-id value to be sent to Internet -->  
<!-- Explorer when using <jsp:plugin> tags. -->  
<!-- [clsid:8AD9C840-044E-11D1-B3E9-00805F499D93] -->  
<!-- -->  
<!-- javaEncoding Java file encoding to use for generating java -->  
<!-- source files. [UTF8] -->  
<!-- -->  
<!-- keepgenerated Should we keep the generated Java source code -->  
<!-- for each page instead of deleting it? [true] -->  
<!-- -->  
<!-- logVerbosityLevel The level of detailed messages to be produced -->  
<!-- by this servlet. Increasing levels cause the -->  
<!-- generation of more messages. Valid values are -->  
<!-- FATAL, ERROR, WARNING, INFORMATION, and DEBUG. -->  
<!-- [WARNING] -->  
<!-- -->  
<!-- mappedfile Should we generate static content with one -->  
<!-- print statement per input line, to ease -->  
<!-- debugging? [false] -->  
<!-- -->  
<!-- -->  
<!-- reloading Should Jasper check for modified JSPs? [true] -->  
<!-- -->  
<!-- suppressSmap Should the generation of SMAP info for JSR45 -->  
<!-- debugging be suppressed? [false] -->  
<!-- -->  
<!-- dumpSmap Should the SMAP info for JSR45 debugging be -->  
<!-- dumped to a file? [false] -->  
<!-- False if suppressSmap is true -->  
<!-- -->  
<!-- scratchdir What scratch directory should we use when -->  
<!-- compiling JSP pages? [default work directory -->  
<!-- for the current web application] -->  
<!-- -->  
<!-- tagpoolMaxSize The maximum tag handler pool size [5] -->  
<!-- -->  
<!-- xpoweredBy Determines whether X-Powered-By response -->  
<!-- header is added by generated servlet [false] -->  
<!-- -->  
<!-- If you wish to use Jikes to compile JSP pages: -->  
<!-- Set the init parameter "compiler" to "jikes". Define -->  
<!-- the property "-Dbuild.compiler.emacs=true" when starting Jetty -->  
<!-- to cause Jikes to emit error messages in a format compatible with -->  
<!-- Jasper. -->  
<!-- If you get an error reporting that jikes can't use UTF8 encoding, -->  
<!-- try setting the init parameter "javaEncoding" to "ISO-8859-1". -->  
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->  
<servlet>  
<servlet-name>Jasper</servlet-name>  
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>  
<init-param>  
<param-name>logVerbosityLevel</param-name>  
<param-value>DEBUG</param-value>  
</init-param>  
<init-param>  
<param-name>fork</param-name>  
<param-value>true</param-value>  
</init-param>  
<init-param>  
<param-name>xpoweredBy</param-name>  
<param-value>false</param-value>  
</init-param>  
<load-on-startup>1</load-on-startup>  
</servlet>  
  
<!-- URL space mappings ============================================= -->  
  
<!--  
Cocoon handles all the URL space assigned to the webapp using its sitemap.  
It is recommended to leave it unchanged. Under some circumstances though  
(like integration with proprietary webapps or servlets) you might have  
to change this parameter.  
-->  
<servlet-mapping>  
<servlet-name>Cocoon</servlet-name>  
<url-pattern>/alarmpoint/*</url-pattern>  
</servlet-mapping>  
  
<!--  
Some servlet engines (Tomcat) have defaults which are not overriden  
by '/' mapping, but must be overriden explicitly.  
-->  
<servlet-mapping>  
<servlet-name>Jasper</servlet-name>  
<url-pattern>*.jsp</url-pattern>  
</servlet-mapping>  
  
  
<!-- Web Application Session Configuration ==================================== -->  
  
<session-config>  
<session-timeout>30</session-timeout>  
</session-config>  
  
  
<!-- various MIME type mappings ====================================== -->  
  
<mime-mapping>  
<extension>css</extension>  
<mime-type>text/css</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>xml</extension>  
<mime-type>text/xml</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>xsl</extension>  
<mime-type>text/xml</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>xconf</extension>  
<mime-type>text/xml</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>xmap</extension>  
<mime-type>text/xml</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>ent</extension>  
<mime-type>text/plain</mime-type>  
</mime-mapping>  
  
<mime-mapping>  
<extension>grm</extension>  
<mime-type>text/plain</mime-type>  
</mime-mapping>  
  
  
<!-- JSP Tag Library Definitions ==================================== -->  
  
<taglib>  
<taglib-uri>http://jakarta.apache.org/taglibs/core</taglib-uri>  
<taglib-location>/WEB-INF/classes/resources/tld/c.tld</taglib-location>  
</taglib>  
  
<taglib>  
<taglib-uri>http://jakarta.apache.org/taglibs/io-1.0</taglib-uri>  
<taglib-location>/WEB-INF/classes/resources/tld/io.tld</taglib-location>  
</taglib>  
  
</web-app>  
</span> 

Further information

For details about setting the web continuation timeout, see How do I set the web continuation timeout?

xMatters Reference

JDN-1230 Originally created by Don Clark

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.
Powered by Zendesk