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%


紅色部分刪去,等號前後不能有空格

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章