Tomcat学习笔记(二)——catalina.bat & setclasspath.bat

操作系统:win7 旗舰版 64位

Tomcat 版本:apache-tomcat-7.0.23-windows-x64.zip (直接加压使用)

Tomcat 解压目录:D:\tomcat-7.0.23(“Tomcat 解压目录” 根据具体情况改变 )

提示:我是在cmd中,转到  D:\tomcat-7.0.23\bin  目录下运行 startup.bat ,所以我的当前工作目录为:D:\tomcat-7.0.23\bin ,以此目录为例进行详解

在Tomcat中 catalina.bat 才是真正的执行 Tomcat 启动和关闭的批处理程序  

一、catalina.bat详解部分代码:

rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath//检查是否存在 setclasspath.bat 文件
echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat"//如果不存在,提示找不到setclasspath.bat 文件
echo This file is needed to run this program
goto end
:okSetclasspath
call "%CATALINA_HOME%\bin\setclasspath.bat" %1 //运行setclasspath.bat 文件
if errorlevel 1 goto end


 

rem quotes into the CLASSPATH
if "%CLASSPATH%" == "" goto emptyClasspath//如果CLASSPATH 变量没有设置,跳转emptyClasspath
set "CLASSPATH=%CLASSPATH%;"
:emptyClasspath
set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"// 追加 bootstrap.jar 文件目录为CLASSPATH 环境变量
// bootstrap.jar 是Tomcat 的内核,bootstrap.jar 同时引用了另外一个jar 包:commons-daemon.jar
// 可以用解压文件查看bootstrap.jar\META-INF\MANIFEST.MF 文件,里面的Class-Path值为: commons-daemon.jar
//Main-Class 值为:org.apache.catalina.startup.Bootstrap ,说明Tomcat主启动程序的类为Bootstrap

set _EXECJAVA=%_RUNJAVA%
set MAINCLASS=org.apache.catalina.startup.Bootstrap//设置主启动类
set ACTION=start
set SECURITY_POLICY_FILE=
set DEBUG_OPTS=
set JPDA=

:doStart
shift
if not "%OS%" == "Windows_NT" goto noTitle
if "%TITLE%" == "" set TITLE=Tomcat//设置TITLE (标题)参数为“Tomcat” 
set _EXECJAVA=start "%TITLE%" %_RUNJAVA% //在新窗口执行命令

 

二、setclasspath.bat
 

rem In debug mode we need a real JDK (JAVA_HOME)
if ""%1"" == ""debug"" goto needJavaHome //debug 模式下需要设置JAVA_HOME环境变量

rem Otherwise either JRE or JDK are fine
if not "%JRE_HOME%" == "" goto gotJreHome //如果设置了JRE_HOME 变量,跳转gotJreHome
if not "%JAVA_HOME%" == "" goto gotJavaHome //如果设置了JAVA_HOME 变量,跳转gotJavaHome
echo Neither the JAVA_HOME nor the JRE_HOME environment variable is defined//提示没有设置JAVA_HOME、JRE_HOME环境变量
echo At least one of these environment variable is needed to run this program
goto exit

:needJavaHome
rem Check if we have a usable JDK
if "%JAVA_HOME%" == "" goto noJavaHome //如果没设置JAVA_HOME变量,跳转noJAVAHOME
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome//检查所需可执行文件
if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
set "JRE_HOME=%JAVA_HOME%"//JAVA_HOME环境完整,将JAVA_HOME变量赋值JRE_HOME
goto okJava


总结:

1.    许多参数,类似于classpath之类的环境变量在批处理文件执行后就会覆盖系统设置的变量,批处理文件结束后,系统的变量才会生效,所以在批处理文件执行期间需要修改classpath文件可在批处理文件中设置

2.    运行Tomcat 只需设置JAVA_HOME 环境变量,CATALINA_HOME 环境变量会从执行 startup.bat 的当前目录 CD 变量中赋值

3.   想要在Tomcat启动失败后能看到一闪而过的窗口,可修改 catalina.bat 文件下的代码

:doStart
shift
if not "%OS%" == "Windows_NT" goto noTitle
if "%TITLE%" == "" set TITLE=Tomcat
set _EXECJAVA=start "%TITLE%" %_RUNJAVA%
goto gotTitle
:noTitle
set _EXECJAVA=start %_RUNJAVA%


红色部分删去,等号前后不能有空格

你可能感兴趣的:(Tomcat学习笔记(二)——catalina.bat & setclasspath.bat)