Apache Tomcat 如何启动:startup、Bootstrap 与 Catalina
出版日期:
更新:
技术文章 > Apache Tomcat 如何启动:startup、Bootstrap 与 Catalina
2026 状态和安全使用
结论: startup.sh 或 startup.bat 委托给 catalina,后者在启动 Tomcat 的 Bootstrap 类之前组装环境变量、类路径、JVM 选项和系统属性。服务管理器可以通过不同的包装器调用相同的运行时。
你将学到什么
CATALINA_HOME、CATALINA_BASE、JAVA_HOME和JRE_HOME如何影响启动。- shell 或批处理参数如何成为 Java 命令,然后成为 Catalina 生命周期操作。
- 在哪里检查最终命令而不复制过时的 JVM 标志。
这适用于哪些人:对启动包装器进行故障排除的操作员和学习 Tomcat 内部结构的开发人员。
2026 位置: 下面的命令跟踪来自 Java 11 上的 Tomcat 9.0.27。使用它来了解流程,然后检查受支持的 Tomcat 版本附带的脚本;内部标志和兼容的 Java 版本发生变化。
安全注意事项:原始文章中的命令和配置示例尚未在当前生产环境中重新运行。应用之前,请在单独的测试环境中验证支持的版本、备份、访问控制和回滚步骤。
官方主要来源
概述。
本文梳理 Tomcat 的启动流程。通常会运行 startup.bat 或 startup.sh;示例基于 Tomcat 9.0.27。
下面还介绍了如何下载Tomcat的 "9.0.27 "版本,如果你需要,请参考一下。
目录
- Tomcat如何启动。
- 1-1. startup.bat的内容
- 摘要
1. Tomcat如何启动。
总之,Tomcat是由以下Java命令启动的。 (假设Tomcat版本为9.0.27,Java版本为OpenJDK11。)
"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
实质上,Tomcat最终是通过执行上述单行Java命令和调用main类(public static void main(String[] args))而启动的。
注意:如果你不知道"-D~"部分有什么作用,请参考以下内容。
最终,一行命令被执行,但你想检查startup.bat在做什么。
1-1. startup.bat的内容
startup.bat只是检查环境设置以启动Tomcat,然后带着参数start执行catalina.bat。 实际的主要处理在 catalina.bat 中描述。
因此,在 catalina.bat 中所做的是对要执行的最终命令进行组装,如前面所述。 具体来说,这些命令是通过寻找以下内容进行组合的
- 要激活的Java目录
- Java的classpath,主类。
- Java选项 (减少前一个词的意义或价值)的喜欢
在搜索了上述内容后,最后的结果是一条单行的Java命令。
2. 摘要
Tomcat是由批处理文件(如startup.bat)启动的,但最终Tomcat是由一个单行Java命令启动的。 这个命令调用main类(public static void main(String[] args)),并启动进程。
顺便说一下,Tomcat的主类位于 "org.apache.catalina.startup.Bootstrap "中。