catalina.bat的流程图较长,先说下结果
执行startup.bat等同于catalina.bat start,而执行catalina.bat start等同于Java Bootstrap start(附带-D、-classpath选项)
Tomcat就是一个java程序
--------------------------------------------------------------------------------------------------------------------------------
catalina.bat中涉及一个新的bat语法:替换变量中的某个字符
获取系统变量:%JAVA_HOME%
获取系统变量%JAVA_HOME%,将%JAVA_HOME%中的a替换成CSDN:%JAVA_HOME:a=CSDN%
创建Test.bat
- @echo off
- echo %JAVA_HOME%
- echo %JAVA_HOME:a=CSDN%
执行结果:

catalina.bat中的%CATALINA_HOME:;=%,是将%CATALINA_HOME%的;删除
catalina.bat中通过"%CATALINA_HOME%" == "%CATALINA_HOME:;=%",检查CATALINA_HOME中是否包含;
true-不包含;false-包含
-------------------------------------------------------------------------------------------------------------------------------
下面我们来看看catalina.bat(代码就不贴了。。。)
@echo off-从本条命令开始开始,关闭回显
if "%OS%" == "Windows_NT" setlocal-判断是否为Windows系统。是,则执行setlocal
以下这部分代码是删除临时文件(如果存在的话)
- if not ""%1"" == ""run"" goto mainEntry
- if "%TEMP%" == "" goto mainEntry
- if exist "%TEMP%\%~nx0.run" goto mainEntry
- echo Y>"%TEMP%\%~nx0.run"
- if not exist "%TEMP%\%~nx0.run" goto mainEntry
- echo Y>"%TEMP%\%~nx0.Y"
- call "%~f0" %* <"%TEMP%\%~nx0.Y"
- rem Use provided errorlevel
- set RETVAL=%ERRORLEVEL%
- del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1
- exit /B %RETVAL%
- :mainEntry
- del /Q "%TEMP%\%~nx0.run" >NUL 2>&1
catalina.bat的流程图

在catalina.bat的:end下方加入一行代码
- echo %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
在cmd下执行startup.bat,执行结果:

红框上方是默认输出;红框内是新添加的输出
将红框内的内容排一下版
- start "Tomcat" "C:\Program Files\Java\jdk1.7.0_51\bin\java"
- -Djava.util.logging.config.file="D:\Program Files\apache-tomcat-8.0.3\conf\logging.properties"
- -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
- -Djava.endorsed.dirs="D:\Program Files\apache-tomcat-8.0.3\endorsed"
- -classpath "D:\Program Files\apache-tomcat-8.0.3\bin\bootstrap.jar;D:\Program Files\apache-tomcat-8.0.3\bin\tomcat-juli.jar"
- -Dcatalina.base="D:\Program Files\apache-tomcat-8.0.3"
- -Dcatalina.home="D:\Program Files\apache-tomcat-8.0.3"
- -Djava.io.tmpdir="D:\Program Files\apache-tomcat-8.0.3\temp"
- org.apache.catalina.startup.Bootstrap start
start-打开一个新的cmd窗口
"title"-cmd窗口的标题(执行catalina.bat start时title为Tomcat)
command/program-执行的命令或程序(执行catalina.bat start时,执行的程序是java)
在cmd下输入java,可看到java的可选项-D、-classpath
org.apache.catalina.startup.Bootstrap start-运行Bootstrap,并传递参数start
执行catalina.bat start,是按上图最左边的路线执行的
所以,startup.bat=catalina.bat start=java Bootstrap start(附带-D、-classpath选项)
Tomcat就是一个java程序!