| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| 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="Property replacements"> |
| <properties> |
| <property name="org.apache.tomcat.util.digester. PROPERTY_SOURCE"> |
| <p>Set this to a comma separated list of fully qualified name of classes |
| that implement |
| <code>org.apache.tomcat.util.IntrospectionUtils.PropertySource</code>. |
| Required to have a public constructor with no arguments.</p> |
| <p>Use this to add a property source, that will be invoked when |
| <code>${parameter:-default-value}</code> denoted parameters (with |
| optional default values) are found in the XML files that Tomcat |
| parses.</p> |
| <p>Property replacement from the specified property source on the JVM |
| system properties can also be done using the |
| <code>REPLACE_SYSTEM_PROPERTIES</code> system property.</p> |
| <p><code>org.apache.tomcat.util.digester.ServiceBindingPropertySource</code> |
| can be used to replace parameters from any Kubernetes service bindings |
| that follows the <a href="https://servicebinding.io/">servicebinding.io</a> spec</p> |
| <p><code>org.apache.tomcat.util.digester.EnvironmentPropertySource</code> |
| can be used to replace parameters from the process' environment |
| variables, e.g. injected ConfigMaps or Secret objects in container |
| based systems like OpenShift or Kubernetes.</p> |
| <p><code>org.apache.tomcat.util.digester.SystemPropertySource</code> |
| does replacement with system properties. It is always enabled, |
| but can also be specified as part of the property value.</p> |
| </property> |
| <property name="org.apache.tomcat.util.digester. REPLACE_SYSTEM_PROPERTIES"> |
| <p>Set this boolean system property to <code>true</code> to cause |
| property replacement from the digester property source on the JVM |
| system properties.</p> |
| </property> |
| </properties> |
| |
| </section> |
| |
| <section name="Expression Language"> |
| <properties> |
| |
| <property name="org.apache.el.BeanELResolver. CACHE_SIZE"> |
| <p>The number of jakarta.el.BeanELResolver.BeanProperties objects that will |
| be cached by the EL Parser.</p> |
| <p>If not specified, the default of <code>1000</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.el.ExpressionBuilder. CACHE_SIZE"> |
| <p>The number of parsed EL expressions that will be cached by the EL |
| Parser.</p> |
| <p>If not specified, the default of <code>5000</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.el.parser. COERCE_TO_ZERO"> |
| <p>If <code>true</code>, when coercing <code>null</code>s to objects of |
| type Number, Character or Boolean the result will be <code>0</code> for |
| Number and Character types and <code>false</code> for Boolean as required |
| by the EL 2.2 and earlier specifications. If this property is |
| <code>false</code> the result of the coercion will be <code>null</code> as |
| required by the EL 3.0 specification.</p> |
| <p>If not specified, the default value of <code>false</code> will be |
| used.</p> |
| </property> |
| |
| <property name="org.apache.el.parser. SKIP_IDENTIFIER_CHECK"> |
| <p>If <code>true</code>, when parsing expressions, identifiers will not be |
| checked to ensure that they conform to the Java Language Specification for |
| Java identifiers.</p> |
| <p>If not specified, the default value of <code>false</code> will be used.</p> |
| </property> |
| |
| </properties> |
| </section> |
| |
| |
| <section name="Specifications"> |
| |
| <properties> |
| |
| <property name="org.apache.catalina. STRICT_SERVLET_COMPLIANCE"> |
| <p>The default value of this system property is <code>false</code>.</p> |
| <p>If this is <code>true</code> the default values will be changed |
| to <code>true</code> instead of <code>false</code> for:</p> |
| <ul> |
| <li>The <code>alwaysAccessSession</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>contextGetResourceRequiresSlash</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>dispatcherWrapsSameObject</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>resourceOnlyServlets</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>tldValidation</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>useRelativeRedirects</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>xmlNamespaceAware</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>xmlValidation</code> attribute of any |
| <a href="context.html">Context</a> element.</li> |
| <li>The <code>sessionActivityCheck</code> attribute of any |
| <a href="manager.html">Manager</a> element.</li> |
| <li>The <code>sessionLastAccessAtStart</code> attribute of any |
| <a href="manager.html">Manager</a> element.</li> |
| </ul> |
| </property> |
| |
| </properties> |
| |
| </section> |
| |
| |
| <section name="Logging"> |
| |
| <properties> |
| |
| <property name="org.apache.juli.formatter"> |
| <p>If no logging configuration file is specified and no logging configuration class is specified |
| using the <code>java.util.logging.config.class</code> and <code>java.util.logging.config.file</code> |
| properties the default logging framework <code>org.apache.juli</code> will use the default |
| <code>java.util.logging.SimpleFormatter</code> for all console output. |
| To simply override the console output formatter, one can use the described property. Example: |
| <code>-Dorg.apache.juli.formatter=org.apache.juli.OneLineFormatter</code></p> |
| </property> |
| |
| <property name="org.apache.juli. AsyncMaxRecordCount"> |
| <p>The maximum number of log records that the JULI AsyncFileHandler will queue in memory. |
| New records are added to the queue and get asynchronously removed from the queue |
| and written to the files by a single writer thread. |
| When the queue is full and a new record is being logged |
| the log record will be handled based on the <code>org.apache.juli.AsyncOverflowDropType</code> setting.</p> |
| <p>The default value is <code>10000</code> records. |
| This number represents the global number of records, not on a per handler basis. |
| </p> |
| </property> |
| |
| <property name="org.apache.juli. AsyncOverflowDropType"> |
| <p>When the queue of log records of the JULI AsyncFileHandler is full, |
| new log records are handled according to the following setting: |
| </p> |
| <ul> |
| <li><code>1</code> - the newest record in the queue will be dropped and not logged</li> |
| <li><code>2</code> - the oldest record in the queue will be dropped and not logged</li> |
| <li><code>3</code> - suspend the logging thread until older records got written to the log file and the queue is no longer full. |
| This is the only setting that ensures that no messages get lost.</li> |
| <li><code>4</code> - drop the current log record</li> |
| </ul> |
| <p>The default value is <code>1</code> (drop the newest record in the queue).</p> |
| </property> |
| |
| <property name="org.apache.juli.logging. UserDataHelper.CONFIG"> |
| <p>The type of logging to use for errors generated by invalid input data. |
| The options are: <code>DEBUG_ALL</code>, <code>INFO_THEN_DEBUG</code>, |
| <code>INFO_ALL</code> and <code>NONE</code>. When |
| <code>INFO_THEN_DEBUG</code> is used, the period for which errors are |
| logged at DEBUG rather than INFO is controlled by the system property |
| <code>org.apache.juli.logging.UserDataHelper.SUPPRESSION_TIME</code>. |
| </p> |
| <p>The default value is <code>INFO_THEN_DEBUG</code>.</p> |
| <p>The errors currently logged using this system are:</p> |
| <ul> |
| <li>invalid cookies;</li> |
| <li>invalid parameters;</li> |
| <li>too many headers, too many parameters (hitting |
| <code>maxHeaderCount</code> or <code>maxParameterCount</code> limits |
| of a <a href="http.html">connector</a>).</li> |
| <li>invalid host names</li> |
| <li>HTTP/2 stream closures</li> |
| </ul> |
| <p>Other errors triggered by invalid input data may be added to this |
| system in later versions.</p> |
| </property> |
| |
| <property name="org.apache.juli.logging. UserDataHelper.SUPPRESSION_TIME"> |
| <p>When using <code>INFO_THEN_DEBUG</code> for |
| <code>org.apache.juli.logging.UserDataHelper.CONFIG</code> this system |
| property controls how long messages are logged at DEBUG after a message |
| has been logged at INFO. Once this period has elapsed, the next message |
| will be logged at INFO followed by a new suppression period where |
| messages are logged at DEBUG and so on. The value is measured |
| in seconds.</p> |
| <p>A value of <code>0</code> is equivalent to using <code>INFO_ALL</code> |
| for <code>org.apache.juli.logging.UserDataHelper.CONFIG</code>.</p> |
| <p>A negative value means an infinite suppression period.</p> |
| <p>The default value is <code>86400</code> (24 hours).</p> |
| </property> |
| </properties> |
| |
| </section> |
| |
| <section name="JAR Scanning"> |
| |
| <properties> |
| <property name="tomcat.util.scan. StandardJarScanFilter.jarsToSkip"> |
| <p>A list of comma-separated file name patterns that is used as the default |
| value for <code>pluggabilitySkip</code> and <code>tldSkip</code> |
| attributes of the standard |
| <a href="jar-scan-filter.html">JarScanFilter</a> implementation.</p> |
| <p>The coded default is empty, however the system property is set in |
| a default Tomcat installation via the |
| <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p> |
| </property> |
| |
| <property name="tomcat.util.scan. StandardJarScanFilter.jarsToScan"> |
| <p>A list of comma-separated file name patterns that is used as the default |
| value for <code>pluggabilityScan</code> and <code>tldScan</code> |
| attributes of the standard |
| <a href="jar-scan-filter.html">JarScanFilter</a> implementation.</p> |
| <p>The coded default is empty, however the system property is set in |
| a default Tomcat installation via the |
| <code>$CATALINA_BASE/conf/catalina.properties</code> file.</p> |
| </property> |
| |
| </properties> |
| |
| </section> |
| |
| <section name="Websockets"> |
| |
| <properties> |
| |
| <property name="org.apache.tomcat. websocket.DEFAULT_BUFFER_SIZE"> |
| <p>The default size for buffers used in the Websockets container.</p> |
| <p>The default value is <code>8192</code> which corresponds to 8 KiB.</p> |
| </property> |
| |
| <property name="org.apache.tomcat. websocket.DEFAULT_ORIGIN_HEADER_VALUE"> |
| <p>Default value of the origin header that will be sent by the client |
| during the upgrade handshake.</p> |
| <p>The default is null so that no origin header is sent.</p> |
| </property> |
| |
| <property name="org.apache.tomcat. websocket.DEFAULT_PROCESS_PERIOD"> |
| <p>The number of periodic ticks between periodic processing which |
| involves in particular session expiration checks.</p> |
| <p>The default value is <code>10</code> which corresponds to 10 |
| seconds.</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="javax.sql.DataSource.Factory"> |
| <p>The class name of the factory to use to create resources of type |
| <code>javax.sql.DataSource</code>. If not specified the default of |
| <code>org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory</code> is used |
| which is a package renamed (to avoid conflicts) copy of |
| <a href="https://commons.apache.org/dbcp">Apache Commons DBCP 2</a>.</p> |
| </property> |
| |
| <property name="jakarta.mail.Session.Factory"> |
| <p>The class name of the factory to use to create resources of type |
| <code>jakarta.mail.Session</code>. If not specified the default of |
| <code>org.apache.naming.factory.MailSessionFactory</code> is used.</p> |
| </property> |
| |
| <property name="catalina.config"> |
| <p>The location from which to load the catalina.properties configuration |
| file. This may be an absolute URL, a relative (to the current working |
| directory) URL or an alternative file name in which case Tomcat will |
| attempt to load the file from the default location of |
| <code>$CATALINA_BASE/conf/</code>.</p> |
| </property> |
| |
| <property name="tomcat.util.buf.StringCache.byte.enabled"> |
| <p>If <code>true</code>, the String cache is enabled for |
| <code>ByteChunk</code>.</p> |
| <p>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>.</p> |
| <p>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.</p> |
| <p>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.</p> |
| <p>If not specified, the default value of <code>200</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.tomcat.util.buf.UriUtil. WAR_SEPARATOR"> |
| <p>The character to use to separate the WAR file and WAR content parts of |
| a WAR URL using the custom WAR scheme provided by Tomcat. This is |
| equivalent to how <code>!</code> is used in JAR URLs.</p> |
| <p>If not specified, the default value of <code>*</code> will be used.</p> |
| </property> |
| |
| <property name="tomcat.util.buf.StringCache.maxStringSize"> |
| <p>The maximum length of String that will be cached.</p> |
| <p>If not specified, the default value of <code>128</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.tomcat.util. http.FastHttpDateFormat.CACHE_SIZE"> |
| <p>The size of the cache to use parsed and formatted date value.</p> |
| <p>If not specified, the default value of <code>1000</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.tomcat.util.openssl.LIBRARY_NAME"> |
| <p>Specify the library name of OpenSSL.</p> |
| <p>If not specified, the default value of <code>ssl</code> will be used, |
| except on MacOS where a dylib versioned name will be used, in the form of |
| <code>ssl.v</code> where v is a version number.</p> |
| </property> |
| |
| <property name="org.apache.tomcat.util.openssl.USE_SYSTEM_LOAD_LIBRARY"> |
| <p>Use <code>System.loadLibrary</code> to load OpenSSL rather than |
| the FFM library loading code.</p> |
| <p>If not specified, the default value of <code>false</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.catalina.startup. EXIT_ON_INIT_FAILURE"> |
| <p>If <code>true</code>, the server will exit if an exception happens |
| during the server initialization phase. To support this feature, this |
| system property is used as the default for the |
| <strong>throwOnFailure</strong> attribute of a Connector.</p> |
| <p>If not specified, the default value of <code>false</code> will be |
| used.</p> |
| </property> |
| |
| <property name="org.apache.catalina.startup. RealmRuleSet.MAX_NESTED_REALM_LEVELS"> |
| <p>The CombinedRealm allows nested Realms. This property controls the |
| maximum permitted number of levels of nesting.</p> |
| <p>If not specified, the default value of <code>3</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.catalina.startup. CredentialHandlerRuleSet.MAX_NESTED_LEVELS"> |
| <p>The NestedCredentialHandler allows nested CredentialHandlers. This |
| property controls the maximum permitted number of levels of nesting.</p> |
| <p>If not specified, the default value of <code>3</code> will be used.</p> |
| </property> |
| |
| <property name="org.apache.catalina.tribes.io. BufferPool.DEFAULT_POOL_SIZE"> |
| <p>The size of the buffer pool which is used by Tribes in bytes.</p> |
| <p>If not specified, the default value of <code>100*1024*1024</code> |
| (100 MiB) will be used.</p> |
| </property> |
| |
| </properties> |
| |
| </section> |
| |
| |
| </body> |
| </document> |