So startet Apache Tomcat: startup, Bootstrap und Catalina
Datum der Veröffentlichung:
Aktualisiert:
Fachartikel > So startet Apache Tomcat: startup, Bootstrap und Catalina
Status 2026 und sichere Verwendung
Fazit: startup.sh oder startup.bat delegiert an catalina, das Umgebungsvariablen, Klassenpfade, JVM-Optionen und Systemeigenschaften zusammenstellt, bevor die Bootstrap-Klasse von Tomcat gestartet wird. Ein Dienstmanager kann dieselbe Laufzeit über einen anderen Wrapper aufrufen.
Was Sie lernen werden
- Wie sich
CATALINA_HOME,CATALINA_BASE,JAVA_HOMEundJRE_HOMEauf den Start auswirken. - Wie Shell- oder Batch-Argumente zu einem Java-Befehl und dann zu einer Catalina-Lebenszyklusoperation werden.
- Wo kann der letzte Befehl überprüft werden, ohne veraltete JVM-Flags zu kopieren?
Für wen ist dies gedacht: Operatoren, die Probleme mit Startup-Wrappern beheben, und Entwickler, die sich mit Tomcat-Interna vertraut machen.
2026-Position: Der folgende Befehls-Trace stammt von Tomcat 9.0.27 auf Java 11. Verwenden Sie ihn, um den Ablauf zu verstehen, und überprüfen Sie dann die Skripts, die mit Ihrer unterstützten Tomcat-Version geliefert werden. Interne Flags und kompatible Java-Versionen ändern sich.
Sicherheitshinweis: Die Befehle und Konfigurationsbeispiele im Originalartikel wurden nicht in einer aktuellen Produktionsumgebung erneut ausgeführt. Überprüfen Sie unterstützte Versionen, Backups, Zugriffskontrollen und Rollback-Schritte in einer separaten Testumgebung, bevor Sie sie anwenden.
Offizielle Primärquellen
Überblick
Dieser Artikel verfolgt den Startablauf von Tomcat. Üblicherweise wird startup.bat oder startup.sh aufgerufen; die Beispiele verwenden Tomcat 9.0.27.
Wie man die Version "9.0.27" von Tomcat herunterlädt, wird ebenfalls weiter unten erklärt, so dass Sie es bei Bedarf nachlesen können.
Inhaltsübersicht
1. Wie Tomcat hochfährt.
Abschließend wird Tomcat mit den folgenden Java-Befehlen gestartet. (Die Annahme ist, dass die Tomcat-Version 9.0.27 und die Java-Version OpenJDK11 ist.)
"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
Im Wesentlichen wird Tomcat schließlich durch die Ausführung des obigen einzeiligen Java-Befehls und den Aufruf der Klasse main (public static void main(String[] args)) gestartet.
Hinweis: Wenn Sie nicht wissen, was der "-D~"-Teil bedeutet, lesen Sie bitte das Folgende.
Was bedeutet die Option D (-D), die beim Start von Java angegeben wird?
Schließlich wird eine einzige Befehlszeile ausgeführt, aber Sie möchten überprüfen, was startup.bat tut.
1-1. Inhalt der Datei startup.bat
Die startup.bat prüft lediglich die Umgebungseinstellungen zum Starten von Tomcat, dann wird catalina.bat mit dem Argument start ausgeführt. Die eigentliche Hauptverarbeitung wird in catalina.bat beschrieben.
Was also in catalina.bat geschieht, ist die Zusammenstellung des letzten auszuführenden Befehls, wie zuvor beschrieben. Im Einzelnen werden die Befehle nach folgenden Kriterien zusammengestellt
- Zu aktivierendes Java-Verzeichnis
- Java-Klassenpfad, Hauptklasse.
- Java-Optionen (Abschwächung der Bedeutung oder des Wertes des vorherigen Wortes) wie
Nach der Suche nach den obigen Angaben ist das Endergebnis ein einzeiliger Java-Befehl.
2. Zusammenfassung
Tomcat wird über eine Batch-Datei wie startup.bat gestartet, aber letztendlich wird Tomcat durch einen einzeiligen Java-Befehl gestartet. Dieser Befehl ruft die Hauptklasse auf (public static void main(String[] args)) und startet den Prozess.
Die Hauptklasse für Tomcat befindet sich übrigens in "org.apache.catalina.startup.Bootstrap".