Tomcat8源码分析1--启动脚本startup.bat

    有篇博客讲的很好 : http://blog.csdn.net/flyliuweisky547/article/details/22208275

  1. 启动脚本startup.bat注释

@echo off

rem 设置对环境的修改本地化,setlocal到endlocal命令之间对环境修改不印象endlocal后的代码
setlocal

rem 设置环境变量CURRENT_DIR为当前目录, 如果环境变量CATALINA_HOME不为空, 跳转到:gotHome开始执行
rem 否则CURRENT_DIR为当前目录, 如果存在%CATALINA_HOME%\bin\catalina.bat就跳转到okHome开始执行
rem 否则切换到上级目录设置CATALINA_HOME当前目录,然后再返回开始的目录
rem 经过上面的步骤,确定了CATALINA_HOME的路径
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%"

rem 如果CATALINA_HOME下存在\bin\catalina.bat, 跳转到okHome处执行
rem 否则提示错误,退出
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end

rem 设置EXECUTABLE变量为\bin\catalina.bat路径.
rem 检查EXECUTABLE路径对于的文件(catalina.bat)是不是存在, 存在就跳转到okExec处执行
rem 否则报错:没有找到catalina.bat 结束程序
:okHome
set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"
if exist "%EXECUTABLE%" goto okExec
echo Cannot find "%EXECUTABLE%"
echo This file is needed to run this program
goto end

rem 存在catalina.bat的时候执行这里的逻辑
:okExec
set CMD_LINE_ARGS=

rem 如果第一个命令行参数为空, 跳转到doneSetArgs处执行
rem 否则设置CMD_LINE_ARGS=CMD_LINE_ARGS+参数值, shift(命令行参数左移移位)
rem 跳转到setArgs循环处理, 直到拼接完所有命令行参数
:setArgs
if ""%1""=="""" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs

rem 执行命令catalina.bat start 参数
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS%

rem 结束
:end

   

   可以看到主要功能是找到CATALINA_HOME,然后调用 catalina.bat start [执行startup.bat是带的参数]

   调用startup.bat最终执行命令为:

start "Tomcat" "E:\Program\Java\jdk1.7.0_45\bin\java.exe"  
    -Djava.util.logging.config.file="G:\workerspace\haogrgr-tomcat8\output\conf\logging.properties" 
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager    
    -Djava.endorsed.dirs="G:\workerspace\haogrgr-tomcat8\output\endorsed" 
    -classpath "G:\workerspace\haogrgr-tomcat8\output\bin\bootstrap.jar;G:\workerspace\haogrgr-tomcat8\output\bin\tomcat-juli.jar" 
    -Dcatalina.base="G:\workerspace\haogrgr-tomcat8\output" 
    -Dcatalina.home="G:\workerspace\haogrgr-tomcat8\output" 
    -Djava.io.tmpdir="G:\workerspace\haogrgr-tomcat8\output\temp" 
        org.apache.catalina.startup.Bootstrap  
            start


  调用shutdown.bat最终执行的命令为:

"E:\Program\Java\jdk1.7.0_45\bin\java.exe"  
    -Djava.util.logging.config.file="G:\workerspace\haogrgr-tomcat8\output\conf\logging.properties" 
    -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager    
    -Djava.endorsed.dirs="G:\workerspace\haogrgr-tomcat8\output\endorsed" 
    -classpath "G:\workerspace\haogrgr-tomcat8\output\bin\bootstrap.jar;G:\workerspace\haogrgr-tomcat8\output\bin\tomcat-juli.jar" 
    -Dcatalina.base="G:\workerspace\haogrgr-tomcat8\output" 
    -Dcatalina.home="G:\workerspace\haogrgr-tomcat8\output" 
    -Djava.io.tmpdir="G:\workerspace\haogrgr-tomcat8\output\temp" 
        org.apache.catalina.startup.Bootstrap  
            stop


你可能感兴趣的:(tomcat)