<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You 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.
-->
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="systemprops.html">

  &project;

  <properties>
    <title>System Properties</title>
  </properties>

<body>

<section name="Table of Contents">
<toc/>
</section>

<section name="Introduction">
  <p>The following sections list the system properties that may be set to modify
  the default Tomcat behaviour.</p>
</section>



<section name="Jasper">
  <properties>

    <property name="org.apache.jasper.compiler. Generator.STRICT_GET_PROPERTY">
      <p>If <code>true</code>, the requirement to have the object referenced in
      <code>jsp:getProperty</code> action to be previously "introduced"
      to the JSP processor, as specified in the chapter JSP.5.3 of JSP 2.0 and
      later specifications, is enforced. If not specified, the specification
      compliant default of <code>true</code> will be used.</p>
    </property>

	<property name="org.apache.jasper.compiler. Parser.STRICT_QUOTE_ESCAPING">
	  <p>If <code>false</code> the requirements for escaping quotes in JSP
      attributes will be relaxed so that an unescaped quote will not
      cause an error. If not specified, the specification compliant default of
      <code>true</code> will be used.</p>
    </property>

    <property name="org.apache.jasper.runtime. BodyContentImpl.LIMIT_BUFFER">
      <p>If <code>true</code>, any tag buffer that expands beyond
      <code>org.apache.jasper.Constants.DEFAULT_TAG_BUFFER_SIZE</code> will be
      destroyed and a new buffer created of the default size. If not specified,
      the default value of <code>false</code> will be used.</p>
    </property>

    <property name="org.apache.jasper.runtime. JspFactoryImpl.USE_POOL">
      <p>If <code>true</code>, a ThreadLocal <code>PageContext</code> pool will
      be used. If not specified, the default value of <code>true</code> will be
      used.</p>
    </property>

  </properties>

</section>


<section name="Security">

  <properties>

    <property
    name="org.apache.catalina.connector. CoyoteAdapter.ALLOW_BACKSLASH">
      <p>If this is <code>true</code> the '\' character will be permitted as a
      path delimiter. If not specified, the default value of <code>false</code>
      will be used.</p>
    </property>

    <property
    name="org.apache.tomcat.util.buf. UDecoder.ALLOW_ENCODED_SLASH">
      <p>If this is <code>true</code> '%2F' and '%5C' will be permitted as path
      delimiters. If not specified, the default value of <code>false</code> will
      be used.</p>
    </property>

    <property
    name="org.apache.coyote. USE_CUSTOM_STATUS_MSG_IN_HEADER"><p>If this is
      <code>true</code>, custom HTTP status messages will be used within HTTP
      headers. If a custom message is specified that is not valid for use in an
      HTTP header (as defined by RFC2616) then the custom message will be
      ignored and the default message used. If not specified, the default value
      of <code>false</code> will be used.</p>
    </property>
  </properties>

</section>


<section name="Specification">

  <properties>

    <property name="org.apache.catalina. STRICT_SERVLET_COMPLIANCE">
      <p>If this is <code>true</code> the following actions will occur:
      <ul>
        <li>any wrapped request or response object passed to an application
          dispatcher will be checked to ensure that it has wrapped the original
          request or response. (SRV.8.2 / SRV.14.2.5.1)
        </li>
        <li>when updating the access count for the session, the update will be
          synchronized.
        </li>
        <li>
          cookies will be parsed strictly, by default v0 cookies will not work
          with any invalid characters.<br/>If set to false, any v0 cookie with
          invalid character will be switched to a v1 cookie and the value will
          be quoted.
        </li>
      </ul>
      </p>
    </property>

    <property name="org.apache.catalina. connector.Request.ALLOW_EMPTY_QUERY_STRING">
      <p>If this is <code>true</code> Tomcat will return an empty string rather
      than <code>null</code> for empty query strings - i.e. query strings where
      only <code>?</code> is present. If not specified, the value of
      <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code> will be used as
      the default.</p> 
    </property>

    <property
    name="org.apache.tomcat.util.http. ServerCookie.ALLOW_EQUALS_IN_VALUE">
      <p>If this is <code>true</code> Tomcat will allow <code>=</code>
      characters when parsing unquoted cookie values. If <code>false</code>,
      cookie values containing <code>=</code> will be terminated when the
      <code>=</code> is encountered and the remainder of the cookie value will
      be dropped. If not specified, the default specification compliant value of
      <code>false</code> will be used.</p>
    </property>
    
    <property
    name="org.apache.tomcat.util.http. ServerCookie.ALWAYS_ADD_EXPIRES">
      <p>If this is <code>true</code> Tomcat will always add an expires
      parameter to a SetCookie header even for cookies with version greater than
      zero. This is to work around a known IE6 and IE7 bug that causes IE to
      ignore the Max-Age parameter in a SetCookie header. If not specified, the
      default value of <code>true</code> will be used.</p>
    </property>

  </properties>

</section>


<section name="Sessions">

  <properties>

    <property name="org.apache.catalina.SESSION_COOKIE_NAME">
      <p>An alternative name for the session cookie. Defaults to
      <code>JSESSIONID</code>. Note that the Servlet specification requires
      this to be <code>JSESSIONID</code>. You should not rely on being able to
      change this.</p>
    </property>

    <property name="org.apache.catalina.SESSION_PARAMETER_NAME">
      <p>An alternative name for the session path parameter. Defaults to
      <code>jsessionid</code>. Note that the Servlet specification requires
      this to be <code>jsessionid</code>. You should not rely on being able to
      change this.</p>
    </property>

    <property name="org.apache.catalina.SSO_SESSION_COOKIE_NAME">
      <p>An alternative name for the single sign on session cookie. Defaults to
      <code>JSESSIONIDSSO</code>.</p>
    </property>
    
  </properties>

</section>


<section name="Other">

  <properties>

    <property name="catalina.useNaming">
      <p>If this is <code>false</code> it will override the
      <code>useNaming</code> attribute for all <a href="context.html">
      Context</a> elements.</p>
    </property>

    <property name="jvmRoute">
      <p>Provides a default value for the <code>jvmRoute</code> attribute of the
      <a href="engine.html">Engine</a> element. It does not override the value
      configured on the <a href="engine.html">Engine</a> element.</p>
    </property>

    <property
    name="org.apache.catalina.loader. WebappClassLoader.ENABLE_CLEAR_REFERENCES">
      <p>If <code>true</code>, Tomcat attempts to null out any static or final
      fields from loaded classes when a web application is stopped as a work
      around for apparent garbage collection bugs and application coding errors.
      </p>
      <p>There have been some issues reported with log4j when this option is
      <code>true</code>.</p>
      <p>Applications without memory leaks using recent JVMs should operate
      correctly with this option set to <code>false</code>.</p>
      <p>If not specified, the default value of <code>true</code> will be used.
      </p>
    </property>

    <property name="catalina.config">
      <p>The URL for the catalina.properties configuration file.</p>
    </property>

    <property name="tomcat.util.buf.StringCache.byte.enabled">
      <p>If <code>true</code>, the String cache is enabled for
      <code>ByteChunk</code>. If not specified, the default value of
      <code>false</code> will be used.</p>
    </property>

    <property name="tomcat.util.buf.StringCache.char.enabled">
      <p>If <code>true</code>, the String cache is enabled for
      <code>CharChunk</code>. If not specified, the default value of
      <code>false</code> will be used.</p>
    </property>

    <property name="tomcat.util.buf.StringCache.trainThreshold">
      <p>The number of times <code>toString()</code> must be called before the
      cache is activated. If not specified, the default value of
      <code>20000</code> will be used.</p>
    </property>

    <property name="tomcat.util.buf.StringCache.cacheSize">
      <p>The size of the String cache. If not specified, the default value of
      <code>200</code> will be used.</p>
    </property>

    <property name="tomcat.util.buf.StringCache.maxStringSize">
      <p>The maximum length of String that will be cached. If not specified, the
      default value of <code>128</code> will be used.</p>
    </property>

  </properties>

</section>


</body>
</document>
