1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397
|
<?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>
|