Catalina.bat是tomcat所有腳本中最重要的腳本,完成幾乎所有的tomcat操作。如啓動,關閉等等,都是由catalina.bat腳本來完成的。接下來,我將對Tomcat catalina.bat腳本進行分析。
首先省去catalina.bat開頭諸多註解,這些註解主要是講解各個變量是幹什麼的。需要的話,自己看下英文就可以了。這裏就不翻譯了。
rem Guess CATALINA_HOME if not defined 查看是否在tomcat目錄下,與startup.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
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome
rem Get standard environment variables
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" 如果存在setenv.bat腳本,調用它,我的tomcat 沒有這個腳本
rem Get standard Java environment variables
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath 查看是否存在setclasspath.bat腳本,如果存在,轉到okSetclasspath位置
echo Cannot find %CATALINA_HOME%\bin\setclasspath.bat 否則輸出下面兩行,並退出
echo This file is needed to run this program
goto end
:okSetclasspath okSetclasspath位置
set BASEDIR=%CATALINA_HOME% 設定BASEDIR變量與CATALINA_HOME變量值相同
call "%CATALINA_HOME%\bin\setclasspath.bat" %1 調用setclasspath.bat腳本並加上參數
if errorlevel 1 goto end 如果存在錯誤 退出
rem Add on extra jar files to CLASSPATH 設定JSSE_HOME變量,如果存在加入CLASSPATH,不存在跳過
if "%JSSE_HOME%" == "" goto noJsse 檢查是否存在JSSE_HOME變量
set CLASSPATH=%CLASSPATH%;%JSSE_HOME%\lib\jcert.jar;%JSSE_HOME%\lib\jnet.jar;%JSSE_HOME%\lib\jsse.jar 如果有加入到CLASSPATH變量後面
:noJsse
set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar 將bootstrap.jar加入到CLASSPATH裏
if not "%CATALINA_BASE%" == "" goto gotBase 如果CATALINA_BASE變量不爲空,跳過,轉到gotBase位置
set CATALINA_BASE=%CATALINA_HOME% 如果爲空,將CATALINA_BASE設爲CATALINA_HOME變量的值
:gotBase
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir CATALINA_TMPDIR不爲空,跳過,轉到gotTmpdir位置
set CATALINA_TMPDIR=%CATALINA_BASE%\temp 如果爲空,將 CATALINA_TMPDIR設爲%CATALINA_BASE%\temp變量的值(即tomcat\temp)
:gotTmpdir
if not exist "%CATALINA_HOME%\bin\tomcat-juli.jar" goto noJuli 如果不存在tomcat-juli.jar這個類,轉到noJuli位置
set
JAVA_OPTS=%JAVA_OPTS%
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -
Djava.util.logging.config.file="%CATALINA_BASE%\conf
\logging.properties" 如果存在,將變量加入到JAVA_OPTS裏
:noJuli
set
JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -Dfile.encoding=UTF8
-Duser.timezone=GMT
-Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config
設定JAVA_OPTS變量
echo Using CATALINA_BASE: %CATALINA_BASE% 輸出CATALINA_BASE變量值
echo Using CATALINA_HOME: %CATALINA_HOME% 輸出CATALINA_HOME變量值
echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR% 輸出CATALINA_TMPDIR變量值
if ""%1"" == ""debug"" goto use_jdk 如果變量%1裏存在debug ,轉到use_jdk位置
echo Using JRE_HOME: %JRE_HOME% 輸出JRE_HOME變量值
goto java_dir_displayed 轉到java_dir_displayed
:use_jdk
echo Using JAVA_HOME: %JAVA_HOME% 輸出JAVA_HOME變量值
:java_dir_displayed
下面幾行設定相應變量
set _EXECJAVA=%_RUNJAVA%
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
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_shmem
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=jdbconn
:gotJpdaAddress
if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend
set JPDA_SUSPEND=n
:gotJpdaSuspend
if not "%JPDA_OPTS%" == "" goto gotJpdaOpts
set JPDA_OPTS=-Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
:gotJpdaOpts
shift
:noJpda
if ""%1"" == ""debug"" goto doDebug 如果%1爲debug,轉到doDebug,運行debug模式
if ""%1"" == ""run"" goto doRun 如果%1爲run,轉到doRun,運行正常模式
if ""%1"" == ""start"" goto doStart 如果%1爲start,轉到doStart,啓動tomcat
if ""%1"" == ""stop"" goto doStop 如果%1爲stop,轉到doStop,關閉tocmat
if ""%1"" == ""version"" goto doVersion 如果%1爲version,轉到doVersion,顯示tomcat的版本號
echo Usage: catalina ( commands ... ) 如果%1沒有上述內容,輸出下面幾行,並結束
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 將%2裏的值轉到%1
set _EXECJAVA=%_RUNJDB% 將變量 _EXECJAVA設爲_RUNJDB變量的值
set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\jakarta-tomcat-catalina\catalina\src\share"
設定DEBUG_OPTS變量
if not ""%1"" == ""-security"" goto execCmd
如果%1不爲-security,轉到execCmd位置
shift 將%2裏的值轉到%1
echo Using Security Manager 輸出該行
set SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
設定SECURITY_POLICY_FILE變量的值
goto execCmd 轉到execCmd位置
:doRun
shift 將%2裏的值轉到%1
if not ""%1"" == ""-security"" goto execCmd
分析 Tomcat catalina.bat 腳本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.