Tomcat 学习进阶历程之启动脚本篇二:catalina.bat

Tomcat 学习进阶历程之启动脚本篇二:catalina.bat

在上一篇startup.bat的介绍中,我们在脚本的最后看到它调用了catalina.bat脚本,本篇就对catalina.bat脚本从头到尾的过一下,看看它到底干了什么?此处就只对重要或不太容易看懂的地方对脚本进行注释。

rem 下面这段脚本主要就是设置当前目录变量,检查catalina.bat在指定目录下是否存在

set "CURRENT_DIR=%cd%"

if not "%CATALINA_HOME%" == ""goto gotHome

set "CATALINA_HOME=%CURRENT_DIR%"

if exist "%CATALINA_HOME%\bin\catalina.bat"goto okHome

cd ..

set "CATALINA_HOME=%cd%"

cd "%CURRENT_DIR%"

:gotHome

if exist "%CATALINA_HOME%\bin\catalina.bat"goto okHome

goto end

:okHome

rem 下面这段脚本主要就是设检查setclasspath.bat脚本是否存在,并调用setclasspath.bat,检查JDKJRE的配置。批处理中正确执行返回的errorlevel都是0,如果setclasspath.bat返回1说明调用失败

set CLASSPATH=

if "%CATALINA_BASE%" == "" gotogotSetenvHome

if exist "%CATALINA_BASE%\bin\setenv.bat"call "%CATALINA_BASE%\bin\setenv.bat"

goto gotSetenvBase

:gotSetenvHome

if exist "%CATALINA_HOME%\bin\setenv.bat"call "%CATALINA_HOME%\bin\setenv.bat"

:gotSetenvBase

if exist"%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath

echo Cannot find"%CATALINA_HOME%\bin\setclasspath.bat"

echo This file is needed to run this program

goto end

:okSetclasspath

set "BASEDIR=%CATALINA_HOME%"

call "%CATALINA_HOME%\bin\setclasspath.bat"%1

if errorlevel 1 goto end

rem 下面这段脚本主要作用就是将要调用的TomcatJAR类文件加入到环境变量中,特别是bootstrap.jar

if "%CLASSPATH%" == "" gotoemptyClasspath

set "CLASSPATH=%CLASSPATH%;"

:emptyClasspath

if "%CATALINA_BASE%" =="%CATALINA_HOME%" goto juliClasspathHome

if not exist"%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome

set"CLASSPATH=%CLASSPATH%%CATALINA_BASE%\bin\tomcat-juli.jar;%CATALINA_HOME%\bin\bootstrap.jar"

goto juliClasspathDone

:juliClasspathHome

set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

:juliClasspathDone

rem 设置JAVA虚拟机将要用到的参数信息

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

rem 判断第一个参数是不是start,是的话跳转到doStart.如果回头去看看startup.bat,可以看到里面确实传递了一个名为start的参数。

if ""%1"" ==""start"" goto doStart

rem 设置Tomcat启动时的名称,要调用的Java命令等。这些变量是在setclasspath.bat中进行了设置。

:doStart

shift

if not "%OS%" == "Windows_NT" gotonoTitle

if "%TITLE%" == "" setTITLE=Tomcat

set _EXECJAVA=start "%TITLE%" %_RUNJAVA%

goto gotTitle

:noTitle

set _EXECJAVA=start %_RUNJAVA%

:gotTitle

if not ""%1"" ==""-security"" goto execCmd

shift

echo Using Security Manager

set"SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy"

goto execCmd

rem 设置参数

:execCmd

rem Get remaining unshifted command line arguments andsave them in the

set CMD_LINE_ARGS=

:setArgs

if""%1""=="""" goto doneSetArgs

set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

shift

goto setArgs

:doneSetArgs

rem 最终通过JAVA命令调用启动Tomcat,其中%ACTION%指定了Tomcatorg. apache.catalina.startup.Bootstrap类。

rem Execute Java with the applicable properties

%_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%

JAVA命令调用的信息可以使用echo命令将调用字符串回显出来.如下图:

Tomcat 学习进阶历程之启动脚本篇二:catalina.bat

可以看到确实调用了Tomcat的启动类bootstrap

通过以上内容,我们也可以了解到,当我们需要增大Tomcat的虚拟内存时,就可以在catalina.bat中进行配置。只要在文件的开头处增加set JAVA_OPTS=-Xms512m -Xmx512m即可,具体大小根据实际进行配置。

Tomcat 学习进阶历程之启动脚本篇二:catalina.bat

上一篇:IOS-动态添加组件


下一篇:家庭记账本安卓版开发:第二天