首页 > Java开发 > 启动tomcat,批处理文件分析

启动tomcat,批处理文件分析

startup.bat(对startup.bat 进行了适当的裁剪):

1 @echo off

//echo off 命令用于让其后的所有命令在执行时都不在命令行窗口中显示命令自身的文本内容。如果在某个命令前加@,如@echo off,这个命令执行时将不在命令行窗口中显示命令自身的文本内容,即echo off命令不显示。

2 if "%OS%" == "Windows_NT" setlocal

//OS环境变量的值是否为Windows_NT。可以在命令行窗口中执行set OS查看OS环境变量的值,执行help setlocal命令查看setlocal的意义。在执行setlocal之后所做的环境改动只限于批处理文件。

3 rem Guess CATALINA_HOME if not defined

//rem命令用于注释一行文本

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

//如果CATALINA_HOME环境变量不等于空字符时,批处理跳转到gotHome所在行,并继续往下执行

5 set "CATALINA_HOME=%CURRENT_DIR%"

//设置CATALINA_HOME环境变量

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

7 cd ..

//如果CATALINA_HOME环境变量下不存在catalina.bat文件,进入上一级目录

8 set "CATALINA_HOME=%cd%"

//设置CATALINA_HOME环境变量为当前目录

9 cd "%CURRENT_DIR%"

10 :gotHome

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

12 echo ...................

13 goto end

14 :okHome

15 set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"

//设置EXECUTABLE环境变量

16 if exist "%EXECUTABLE%" goto okExec

17 echo ..............................

18 goto end

19 :okExec

20 set CMD_LINE_ARGS=

//将CMD_LINE_ARGS环境变量的值清空

21 :setArgs

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

//批处理文件中可以使用%0到%9。%0的值为正在执行的批处理文件名,%1到%9依次为传递给这个批处理文件的前9个参数。例如在命令行窗口中执行catalina.bat start,start就是一个传递给catalina.bat的参数

23 set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1

//将参数拼接到CMD_LINE_ARGS环境变量中

24 shift

//shift用来移动参数。%2的值移到%1的参数中,%3的值移到%2的参数中,%4的值移到%3的参数中,依次类推。

25 goto setArgs

//批处理跳转到setArgs行,继续处理下一个参数,相当于循环拼接所有参数。

26 :doneSetArgs

 

//开启远程调试Tomcat,jpda调试默认端口是8000

//set JPDA_TRANSPORT=dt_socket

//set JPDA_ADDRESS=8000

//set JPDA_SUSPEND=y

//call "%EXECUTABLE%" jpdastart %CMD_LINE_ARGS%

27 call "%EXECUTABLE%" start %CMD_LINE_ARGS%

//执行带参数的catalina.bat脚本

28 :end

 

 

------------------------------

catalina.bat

set "CURRENT_DIR=%cd%"

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

.......................

:gotHome

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

echo .........

goto end

:okHome

if not "%CATALINA_BASE%" == "" goto gotBase

set "CATALINA_BASE=%CATALINA_HOME%"

//设置CATALINA_BASE环境变量的值为CATALINA_HOME

:gotBase

set CLASSPATH=

//清空CLASSPATH环境变量的值

if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome

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

//执行setenv.bat脚本

goto setenvDone

:checkSetenvHome

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

:setenvDone

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

echo ...............

goto end

:okSetclasspath

set "BASEDIR=%CATALINA_HOME%"

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

if errorlevel 1 goto end

//如果返回码等于指定的数字,则条件成立。setclasspath.bat会返回0或1,返回1表示异常退出,0表示正常执行完。

if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir

set "CATALINA_TMPDIR=%CATALINA_BASE%\temp"

:gotTmpdir

if "%CLASSPATH%" == "" goto emptyClasspath

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"

//将bootstrap.jar添加到CLASSPATH环境变量中。因为tomcat需要将jsp页面生成的Servlet源文件编译成java字节码后运行,而那些编译java源文件的类位于bootstrap.jar中。

:juliClasspathDone

if not "%LOGGING_CONFIG%" == "" goto noJuliConfig

set LOGGING_CONFIG=-Dnop

if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig

set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"

:noJuliConfig

set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%

//添加日志配置文件到JAVA_OPTS环境变量中

.......................

echo Using CATALINA_BASE:   "%CATALINA_BASE%"

echo Using CATALINA_HOME:   "%CATALINA_HOME%"

echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"

if ""%1"" == ""debug"" goto use_jdk

echo Using JRE_HOME:        "%JRE_HOME%"

goto java_dir_displayed

:use_jdk

echo Using JAVA_HOME:       "%JAVA_HOME%"

:java_dir_displayed

echo Using CLASSPATH:       "%CLASSPATH%"

//打印的结果:

 

set _EXECJAVA=%_RUNJAVA%

//_RUNJAVA环境变量在setclasspath.bat中定义,值等于"%JRE_HOME%\bin\java"

set MAINCLASS=org.apache.catalina.startup.Bootstrap

set ACTION=start

set SECURITY_POLICY_FILE=

set DEBUG_OPTS=

set JPDA=

if not ""%1"" == ""jpda"" goto noJpda

//jpda远程调试Tomcat,默认Jpda是不启用的

set JPDA=jpda

if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport

set JPDA_TRANSPORT=dt_socket

:gotJpdaTransport

if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress

set JPDA_ADDRESS=8000

:gotJpdaAddress

if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend

set JPDA_SUSPEND=n

//suspend=y这个选项很重要。如果你想从Tomcat启动的一开始就进行调试,那么就必须设置suspend=y

:gotJpdaSuspend

if not "%JPDA_OPTS%" == "" goto gotJpdaOpts

set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%

:gotJpdaOpts

shift

:noJpda

if ""%1"" == ""debug"" goto doDebug

if ""%1"" == ""run"" goto doRun

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

if ""%1"" == ""stop"" goto doStop

if ""%1"" == ""version"" goto doVersion

echo Usage:  catalina ( commands ... )

echo commands:

echo   debug             Start Catalina in a debugger

echo   debug -security   Debug Catalina with a security manager

echo   jpda start        Start Catalina under JPDA debugger

echo   run               Start Catalina in the current window

echo   run -security     Start in the current window with security manager

echo   start             Start Catalina in a separate window

echo   start -security   Start in a separate window with security manager

echo   stop              Stop Catalina

echo   version           What version of tomcat are you running?

goto end

:doDebug

shift

set _EXECJAVA=%_RUNJDB%

set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java"

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

shift

echo Using Security Manager

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

goto execCmd

:doRun

shift

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

shift

echo Using Security Manager

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

goto execCmd

:doStart

shift

if not "%OS%" == "Windows_NT" goto noTitle

if "%TITLE%" == "" set TITLE=Tomcat

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

//start Tomcat %JRE_HOME%\bin\java

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

:doStop

shift

set ACTION=stop

set CATALINA_OPTS=

goto execCmd

:doVersion

%_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo

goto end

:execCmd

rem Get remaining unshifted command line arguments and save 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 Execute Java with the applicable properties

if not "%JPDA%" == "" goto doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity

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

//启动tomcat

//_EXECJAVA = start Tomcat %JRE_HOME%\bin\java

//JAVA_OPTS = " -Djava.util.logging.config.file="D:\lfy\tools\Apache-tomcat-test\conf\logging.

properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"

//CATALINA_OPTS=""

//DEBUG_OPTS = ""

//CMD_LINE_ARGS = ""

//ACTION = "start"

goto end

:doSecurity

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

:doJpda

if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_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%

goto end

:doSecurityJpda

%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%"
-Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

goto end

:end

 


本文固定链接: http://www.devba.com/index.php/archives/648.html | 开发吧

报歉!评论已关闭.