# Codehaus Cargo : Tomcat 11.x

Created by S. Ali Tokmen, last modified on Oct 14, 2025

This page has been automatically generated by Cargo's build. Do not edit it directly as it'll be overwritten next time it's generated again.

Users of Tomcat 10.x onwards should be aware that, as a result of the move from Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse Foundation, the primary package for all implemented APIs has changed from `javax.*` to `jakarta.*`. This will almost certainly require code changes to enable applications to migrate to Tomcat 10.x and later.

Tomcat 10.x onwards has an integrated functionality for automatically migrating J2EE / Java EE WARs to Jakarta EE. You can follow the instructions on Deploying legacy WARs to Tomcat 10.x onwards to make use of it.

### Container Features

Feature name | Java API | Ant tasks | Maven 3 plugin | Comment
--- | --- | --- | --- | ---
Container Instantiation | `ContainerFactory.createContainer("tomcat11x"...)` | `<cargo containerId="tomcat11x".../>` | `<containerId>tomcat11x</containerId>` |
Local Container |  |  |  |
Container Classpath |  |  |  |
Container Start |  |  |  |
Container Stop |  |  |  |
Container Timeout |  |  |  |
Embedded Container | `o.c.c.c.tomcat.Tomcat11xEmbeddedLocalContainer` |  |  |
Installed Container | `o.c.c.c.tomcat.Tomcat11xInstalledLocalContainer` |  |  |
Passing system properties |  |  |  |
Installer |  |  |  |
Remote Container | `o.c.c.c.tomcat.Tomcat11xRemoteContainer` |  |  |

### Configuration Features

Feature name | Java API | Ant tasks | Maven 3 plugin | Comment
--- | --- | --- | --- | ---
Standalone Local Configuration for installed container | `o.c.c.c.tomcat.Tomcat11xStandaloneLocalConfiguration` |  |  |
Standalone Local Configuration for embedded container | `o.c.c.c.tomcat.Tomcat11xStandaloneLocalConfiguration` |  |  |
Existing Local Configuration for installed container | `o.c.c.c.tomcat.TomcatExistingLocalConfiguration` |  |  |
Existing Local Configuration for embedded container | `o.c.c.c.tomcat.TomcatExistingLocalConfiguration` |  |  |
Runtime Configuration | `o.c.c.c.tomcat.Tomcat11xRuntimeConfiguration` |  |  |
Static deployment of WAR |  |  |  |
Static deployment of expanded WAR |  |  |  |
Static deployment of EJB |  |  |  |
Static deployment of EAR |  |  |  |
Static deployment of RAR |  |  |  |
Static deployment of files |  |  |  |
Static deployment of OSGi Bundles |  |  |  |

### Deployer Features

Feature name | Java API | Ant tasks | Maven 3 plugin | Comment
--- | --- | --- | --- | ---
Installed Deployer | `o.c.c.c.tomcat.TomcatCopyingInstalledLocalDeployer` |  |  |
Embedded Deployer | `o.c.c.c.tomcat.TomcatEmbeddedLocalDeployer` |  |  |
Remote Deployer | `o.c.c.c.tomcat.Tomcat11xRemoteDeployer` |  |  |

### Other Features

Feature name | Java API | Ant tasks | Maven 3 plugin | Comment
--- | --- | --- | --- | ---
Debugging |  |  |  |

### Supported Configuration properties

The tables below list both the general configuration properties as well as the container-specific ones.

#### Standalone Local Configuration Properties

##### For installed container o.c.c.c.tomcat.Tomcat11xInstalledLocalContainer

Property name | Java Property | Supported? | Default value | Javadoc
--- | --- | --- | --- | ---
cargo.hostname | GeneralPropertySet.HOSTNAME |  | `localhost` |
cargo.java.home | GeneralPropertySet.JAVA_HOME |  | JAVA_HOME version 21 or newer |
cargo.jvmargs | GeneralPropertySet.JVMARGS |  | N/A |
cargo.logging | GeneralPropertySet.LOGGING |  | `medium` |
cargo.port.offset | GeneralPropertySet.PORT_OFFSET |  | `0` |
cargo.process.spawn | GeneralPropertySet.SPAWN_PROCESS |  | `false` |
cargo.protocol | GeneralPropertySet.PROTOCOL |  | `http` |
cargo.rmi.port | GeneralPropertySet.RMI_PORT |  | `8205` |
cargo.runtime.args | GeneralPropertySet.RUNTIME_ARGS |  | N/A |
cargo.servlet.port | ServletPropertySet.PORT |  | `8080` |
cargo.servlet.users | ServletPropertySet.USERS |  | `admin::manager-script` |
cargo.standalone.ignoreNonExistingProperties | GeneralPropertySet.IGNORE_NON_EXISTING_PROPERTIES |  | N/A |
cargo.start.jvmargs | GeneralPropertySet.START_JVMARGS |  | N/A |
cargo.tomcat.ajp.port | TomcatPropertySet.AJP_PORT |  | `8009` |
cargo.tomcat.connector.httpUpgradeProtocol | TomcatPropertySet.CONNECTOR_HTTP_UPGRADE_PROTOCOL |  | N/A |
cargo.tomcat.connector.keystoreFile | TomcatPropertySet.CONNECTOR_KEY_STORE_FILE |  | N/A |
cargo.tomcat.connector.keystorePass | TomcatPropertySet.CONNECTOR_KEY_STORE_PASSWORD |  | N/A |
cargo.tomcat.connector.keystoreType | TomcatPropertySet.CONNECTOR_KEY_STORE_TYPE |  | `RSA` |
cargo.tomcat.connector.maxHttpHeaderSize | TomcatPropertySet.CONNECTOR_MAX_HTTP_HEADER_SIZE |  | N/A |
cargo.tomcat.connector.maxPartCount | TomcatPropertySet.CONNECTOR_MAX_PART_COUNT |  | N/A |
cargo.tomcat.connector.protocolClass | TomcatPropertySet.CONNECTOR_PROTOCOL_CLASS |  | N/A |
cargo.tomcat.context.allowCasualMultipartParsing | TomcatPropertySet.CONTEXT_ALLOW_MULTIPART |  | `true` |
cargo.tomcat.context.mapJarToWebinfClasses | TomcatPropertySet.CONTEXT_MAP_JARS_TO_WEBINF_CLASSES |  | `false` |
cargo.tomcat.context.reloadable | TomcatPropertySet.CONTEXT_RELOADABLE |  | `false` |
cargo.tomcat.copywars | TomcatPropertySet.COPY_WARS |  | `true` |
cargo.tomcat.host.startStopThreads | TomcatPropertySet.HOST_START_STOP_THREADS |  | N/A |
cargo.tomcat.uriencoding | TomcatPropertySet.URI_ENCODING |  | `UTF-8` |
cargo.tomcat.useHttpOnly | TomcatPropertySet.USE_HTTP_ONLY |  | N/A |
cargo.tomcat.valve | TomcatPropertySet.CUSTOM_VALVE |  | N/A |
cargo.tomcat.webappsDirectory | TomcatPropertySet.WEBAPPS_DIRECTORY |  | `webapps` |
cargo.tomcat.webappsLegacyDirectory | TomcatPropertySet.WEBAPPS_LEGACY_DIRECTORY |  | `webapps-javaee` |

Datasource and Resource configuration

In addition to the forementioned properties, this container configuration can also set up datasources and/or resources.

For more details, please read: DataSource and Resource Support.

Configuring HTTP/2 for Tomcat 8.5 and above

Tomcat 8.5 and above support HTTP/2.

For further information on how to enable this, please refer to Configuring HTTP/2 for Tomcat 8.5 and above.

##### For embedded container o.c.c.c.tomcat.Tomcat11xEmbeddedLocalContainer

Property name | Java Property | Supported? | Default value | Javadoc
--- | --- | --- | --- | ---
cargo.hostname | GeneralPropertySet.HOSTNAME |  | `localhost` |
cargo.java.home | GeneralPropertySet.JAVA_HOME |  | JAVA_HOME version 21 or newer |
cargo.jvmargs | GeneralPropertySet.JVMARGS |  | N/A |
cargo.logging | GeneralPropertySet.LOGGING |  | `medium` |
cargo.port.offset | GeneralPropertySet.PORT_OFFSET |  | `0` |
cargo.protocol | GeneralPropertySet.PROTOCOL |  | `http` |
cargo.rmi.port | GeneralPropertySet.RMI_PORT |  | `8205` |
cargo.runtime.args | GeneralPropertySet.RUNTIME_ARGS |  | N/A |
cargo.servlet.port | ServletPropertySet.PORT |  | `8080` |
cargo.servlet.users | ServletPropertySet.USERS |  | `admin::manager-script` |
cargo.standalone.ignoreNonExistingProperties | GeneralPropertySet.IGNORE_NON_EXISTING_PROPERTIES |  | N/A |
cargo.start.jvmargs | GeneralPropertySet.START_JVMARGS |  | N/A |
cargo.tomcat.ajp.port | TomcatPropertySet.AJP_PORT |  | `8009` |
cargo.tomcat.connector.httpUpgradeProtocol | TomcatPropertySet.CONNECTOR_HTTP_UPGRADE_PROTOCOL |  | N/A |
cargo.tomcat.connector.keystoreFile | TomcatPropertySet.CONNECTOR_KEY_STORE_FILE |  | N/A |
cargo.tomcat.connector.keystorePass | TomcatPropertySet.CONNECTOR_KEY_STORE_PASSWORD |  | N/A |
cargo.tomcat.connector.keystoreType | TomcatPropertySet.CONNECTOR_KEY_STORE_TYPE |  | `RSA` |
cargo.tomcat.connector.maxHttpHeaderSize | TomcatPropertySet.CONNECTOR_MAX_HTTP_HEADER_SIZE |  | N/A |
cargo.tomcat.connector.maxPartCount | TomcatPropertySet.CONNECTOR_MAX_PART_COUNT |  | N/A |
cargo.tomcat.connector.protocolClass | TomcatPropertySet.CONNECTOR_PROTOCOL_CLASS |  | N/A |
cargo.tomcat.context.allowCasualMultipartParsing | TomcatPropertySet.CONTEXT_ALLOW_MULTIPART |  | `true` |
cargo.tomcat.context.mapJarToWebinfClasses | TomcatPropertySet.CONTEXT_MAP_JARS_TO_WEBINF_CLASSES |  | `false` |
cargo.tomcat.context.reloadable | TomcatPropertySet.CONTEXT_RELOADABLE |  | `false` |
cargo.tomcat.copywars | TomcatPropertySet.COPY_WARS |  | `true` |
cargo.tomcat.embedded.overrideJavaLogging | TomcatPropertySet.EMBEDDED_OVERRIDE_JAVA_LOGGING |  | `false` |
cargo.tomcat.host.startStopThreads | TomcatPropertySet.HOST_START_STOP_THREADS |  | N/A |
cargo.tomcat.uriencoding | TomcatPropertySet.URI_ENCODING |  | `UTF-8` |
cargo.tomcat.useHttpOnly | TomcatPropertySet.USE_HTTP_ONLY |  | N/A |
cargo.tomcat.valve | TomcatPropertySet.CUSTOM_VALVE |  | N/A |
cargo.tomcat.webappsDirectory | TomcatPropertySet.WEBAPPS_DIRECTORY |  | `webapps` |
cargo.tomcat.webappsLegacyDirectory | TomcatPropertySet.WEBAPPS_LEGACY_DIRECTORY |  | `webapps-javaee` |

Datasource and Resource configuration

In addition to the forementioned properties, this container configuration can also set up datasources and/or resources.

For more details, please read: DataSource and Resource Support.

Configuring HTTP/2 for Tomcat 8.5 and above

Tomcat 8.5 and above support HTTP/2.

For further information on how to enable this, please refer to Configuring HTTP/2 for Tomcat 8.5 and above.

#### Existing Local Configuration Properties

##### For installed container o.c.c.c.tomcat.Tomcat11xInstalledLocalContainer

Property name | Java Property | Supported? | Default value | Javadoc
--- | --- | --- | --- | ---
cargo.hostname | GeneralPropertySet.HOSTNAME |  | `localhost` |
cargo.java.home | GeneralPropertySet.JAVA_HOME |  | JAVA_HOME version 21 or newer |
cargo.jvmargs | GeneralPropertySet.JVMARGS |  | N/A |
cargo.port.offset | GeneralPropertySet.PORT_OFFSET |  | `0` |
cargo.process.spawn | GeneralPropertySet.SPAWN_PROCESS |  | `false` |
cargo.protocol | GeneralPropertySet.PROTOCOL |  | `http` |
cargo.runtime.args | GeneralPropertySet.RUNTIME_ARGS |  | N/A |
cargo.servlet.port | ServletPropertySet.PORT |  | `8080` |
cargo.start.jvmargs | GeneralPropertySet.START_JVMARGS |  | N/A |

##### For embedded container o.c.c.c.tomcat.Tomcat11xEmbeddedLocalContainer

Property name | Java Property | Supported? | Default value | Javadoc
--- | --- | --- | --- | ---
cargo.hostname | GeneralPropertySet.HOSTNAME |  | `localhost` |
cargo.java.home | GeneralPropertySet.JAVA_HOME |  | JAVA_HOME version 21 or newer |
cargo.jvmargs | GeneralPropertySet.JVMARGS |  | N/A |
cargo.port.offset | GeneralPropertySet.PORT_OFFSET |  | `0` |
cargo.protocol | GeneralPropertySet.PROTOCOL |  | `http` |
cargo.runtime.args | GeneralPropertySet.RUNTIME_ARGS |  | N/A |
cargo.servlet.port | ServletPropertySet.PORT |  | `8080` |
cargo.start.jvmargs | GeneralPropertySet.START_JVMARGS |  | N/A |
cargo.tomcat.embedded.overrideJavaLogging | TomcatPropertySet.EMBEDDED_OVERRIDE_JAVA_LOGGING |  | `false` |

#### Runtime Configuration Properties

##### For remote container o.c.c.c.tomcat.Tomcat11xRemoteContainer

Property name | Java Property | Supported? | Default value | Javadoc
--- | --- | --- | --- | ---
cargo.hostname | GeneralPropertySet.HOSTNAME |  | `localhost` |
cargo.protocol | GeneralPropertySet.PROTOCOL |  | `http` |
cargo.remote.password | RemotePropertySet.PASSWORD |  | N/A |
cargo.remote.timeout | RemotePropertySet.TIMEOUT |  | `7200000` |
cargo.remote.uri | RemotePropertySet.URI |  | N/A |
cargo.remote.username | RemotePropertySet.USERNAME |  | N/A |
cargo.servlet.port | ServletPropertySet.PORT |  | `8080` |
cargo.tomcat.deploy.update | TomcatPropertySet.DEPLOY_UPDATE |  | `false` |
cargo.tomcat.undeploy.allVersions | TomcatPropertySet.UNDEPLOY_ALL_VERSIONS |  | `false` |

With Tomcat 11, the Tomcat manager has multiple aspects to be careful about:

- Your browser by default accesses the HTML-based manager whereas Codehaus Cargo needs to use the text-based manager. As a result, if you want to set the `RemotePropertySet.URI` manually, please make sure you set the URL for the text-based manager, for example `http://production27:8080/manager/text`
- The text-based manager requires to be accessed by a user with the `manager-script` role; and by default no user has that role. As a result, please make sure you modify your `tomcat-users.xml` file to give that role to a user.
  You can read more in the Tomcat documentation: https://tomcat.apache.org/tomcat-11.0-doc/manager-howto.html

### Tested On

This container is automatically tested by the Continous Integration (CI) system every time there is a code change.
The server used for tests is downloaded from: https://repo.maven.apache.org/maven2/org/apache/tomcat/tomcat/11.0.12/tomcat-11.0.12.zip