How Apache Tomcat Starts: startup Scripts, Bootstrap, and Catalina
Publication Date:
Updated:
INFORMATION > How Apache Tomcat Starts: startup Scripts, Bootstrap, and Catalina
Bottom line: startup.sh or startup.bat delegates to catalina, which assembles environment variables, classpaths, JVM options, and system properties before launching Tomcat's Bootstrap class. A service manager may invoke the same runtime through a different wrapper.
What you'll learn
- How
CATALINA_HOME,CATALINA_BASE,JAVA_HOME, andJRE_HOMEaffect startup. - How shell or batch arguments become a Java command and then a Catalina lifecycle operation.
- Where to inspect the final command without copying obsolete JVM flags.
Who this is for: Operators troubleshooting startup wrappers and developers learning Tomcat internals.
2026 context: The command trace below is from Tomcat 9.0.27 on Java 11. Use it to understand the flow, then inspect the scripts shipped with your supported Tomcat release; internal flags and compatible Java versions change.
Overview
This article traces how Tomcat starts. Administrators usually invoke startup.bat or startup.sh, but those scripts perform several steps before the server is ready. The examples use Tomcat 9.0.27.
The Tomcat download guide explains where the historical 9.0.27 archive appeared. Use a supported release for an actual installation.
Table of Contents
1. How Tomcat starts
In this historical Tomcat 9.0.27 and OpenJDK 11 example, the Windows scripts ultimately assemble and execute the following Java command:
"C:\Program Files (x86)\Java\jdk-11\bin\java.exe" -Djava.util.logging.config.file="C:\apache-tomcat-9.0.27\conf\logging.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs="" -classpath "C:\apache-tomcat-9.0.27\bin\bootstrap.jar;C:\apache-tomcat-9.0.27\bin\tomcat-juli.jar" -Dcatalina.base="C:\apache-tomcat-9.0.27" -Dcatalina.home="C:\apache-tomcat-9.0.27" -Djava.io.tmpdir="C:\apache-tomcat-9.0.27\temp" org.apache.catalina.startup.Bootstrap start
The command constructs the classpath and system properties, then invokes the main method in org.apache.catalina.startup.Bootstrap with the start argument.
The Java -D system-property guide explains the launcher options.
The final command delegates to startup.bat; the next section traces what that script does.
1-1. Contents of startup.bat
startup.bat checks the launch environment and calls catalina.bat start. Most command construction happens in catalina.bat.
The scripts resolve:
- the Java executable;
- Tomcat home and base directories;
- the classpath and main class;
- JVM system properties and other launch options.
The exact command varies by Tomcat and Java version, local environment variables, and service configuration.
2. Conclusion
The startup wrapper prepares Tomcat's environment and invokes Java. In this release, the entry point is org.apache.catalina.startup.Bootstrap. When diagnosing a launch problem, inspect the scripts shipped with the installed release and the effective environment rather than copying the historical command.
Official references
■INFORMATION
■PROFILE
■CONTACT