Tomcat 八(六)catalina.bat详解
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替换成****:%JAVA_HOME:a=****%
创建Test.bat
@echo off echo %JAVA_HOME% echo %JAVA_HOME:a=****%
执行结果:
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程序!