分析tomcatcatalinabat脚本Word格式.docx
《分析tomcatcatalinabat脚本Word格式.docx》由会员分享,可在线阅读,更多相关《分析tomcatcatalinabat脚本Word格式.docx(7页珍藏版)》请在冰豆网上搜索。
cd%CURRENT_DIR%
:
gotHome
echoTheCATALINA_HOMEenvironmentvariableisnotdefinedcorrectly
echoThisenvironmentvariableisneededtorunthisprogram
gotoend
okHomeremGetstandardenvironmentvariables
%CATALINA_HOME%\bin\setenv.bat"
call"
如果存在setenv.bat脚本,调用它,我的tomcat没有这个脚本remGetstandardJavaenvironmentvariables
%CATALINA_HOME%\bin\setclasspath.bat"
gotookSetclasspath查看是否存在setclasspath.bat脚本,如果存在,转到okSetclasspath位置
echoCannotfind%CATALINA_HOME%\bin\setclasspath.bat否则输出下面两行,并退出
echoThisfileisneededtorunthisprogram
okSetclasspathokSetclasspath位置setBASEDIR=%CATALINA_HOME%设定BASEDIR变量与CATALINA_HOME变量值相同
call"
%1调用setclasspath.bat脚本并加上参数
iferrorlevel1gotoend如果存在错误退出remAddonextrajarfilestoCLASSPATH设定JSSE_HOME变量,如果存在加入CLASSPATH,不存在跳过if"
%JSSE_HOME%"
gotonoJsse检查是否存在JSSE_HOME变量
setCLASSPATH=%CLASSPATH%;
%JSSE_HOME%\lib\jcert.jar;
%JSSE_HOME%\lib\jnet.jar;
%JSSE_HOME%\lib\jsse.jar如果有加入到CLASSPATH变量后面
noJsse
%CATALINA_HOME%\bin\bootstrap.jar将bootstrap.jar加入到CLASSPATH里ifnot"
%CATALINA_BASE%"
gotogotBase如果CATALINA_BASE变量不为空,跳过,转到gotBase位置
setCATALINA_BASE=%CATALINA_HOME%如果为空,将CATALINA_BASE设为CATALINA_HOME变量的值
gotBaseifnot"
%CATALINA_TMPDIR%"
gotogotTmpdirCATALINA_TMPDIR不为空,跳过,转到gotTmpdir位置
setCATALINA_TMPDIR=%CATALINA_BASE%\temp如果为空,将CATALINA_TMPDIR设为%CATALINA_BASE%\temp变量的值(即tomcat\temp)
gotTmpdirifnotexist"
%CATALINA_HOME%\bin\tomcat-juli.jar"
gotonoJuli如果不存在tomcat-juli.jar这个类,转到noJuli位置
setJAVA_OPTS=%JAVA_OPTS%-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file="
%CATALINA_BASE%\conf\logging.properties"
如果存在,将变量加入到JAVA_OPTS里
noJulisetJAVA_OPTS=%JAVA_OPTS%-Xms128m-Xmx512m-Dfile.encoding=UTF8-Duser.timezone=GMT-Djava.security.auth.login.config=%CATALINA_HOME%/conf/jaas.config设定JAVA_OPTS变量echoUsingCATALINA_BASE:
%CATALINA_BASE%输出CATALINA_BASE变量值
echoUsingCATALINA_HOME:
%CATALINA_HOME%输出CATALINA_HOME变量值
echoUsingCATALINA_TMPDIR:
%CATALINA_TMPDIR%输出CATALINA_TMPDIR变量值
if"
%1"
debug"
gotouse_jdk如果变量%1里存在debug,转到use_jdk位置
echoUsingJRE_HOME:
%JRE_HOME%输出JRE_HOME变量值
gotojava_dir_displayed转到java_dir_displayed
use_jdk
echoUsingJAVA_HOME:
%JAVA_HOME%输出JAVA_HOME变量值
java_dir_displayed
下面几行设定相应变量
set_EXECJAVA=%_RUNJAVA%
setMAINCLASS=org.apache.catalina.startup.Bootstrap
setACTION=start
setSECURITY_POLICY_FILE=
setDEBUG_OPTS=
setJPDA=ifnot"
jpda"
gotonoJpda
setJPDA=jpda
%JPDA_TRANSPORT%"
gotogotJpdaTransport
setJPDA_TRANSPORT=dt_shmem
gotJpdaTransport
%JPDA_ADDRESS%"
gotogotJpdaAddress
setJPDA_ADDRESS=jdbconn
gotJpdaAddress
%JPDA_SUSPEND%"
gotogotJpdaSuspend
setJPDA_SUSPEND=n
gotJpdaSuspend
%JPDA_OPTS%"
gotogotJpdaOpts
setJPDA_OPTS=-Xdebug-Xrunjdwp:
transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%
gotJpdaOpts
shift
noJpdaif"
gotodoDebug如果%1为debug,转到doDebug,运行debug模式
run"
gotodoRun如果%1为run,转到doRun,运行正常模式
start"
gotodoStart如果%1为start,转到doStart,启动tomcat
stop"
gotodoStop如果%1为stop,转到doStop,关闭tocmat
version"
gotodoVersion如果%1为version,转到doVersion,显示tomcat的版本号echoUsage:
catalina(commands...)如果%1没有上述内容,输出下面几行,并结束
echocommands:
echodebugStartCatalinainadebugger
echodebug-securityDebugCatalinawithasecuritymanager
echojpdastartStartCatalinaunderJPDAdebugger
echorunStartCatalinainthecurrentwindow
echorun-securityStartinthecurrentwindowwithsecuritymanager
echostartStartCatalinainaseparatewindow
echostart-securityStartinaseparatewindowwithsecuritymanager
echostopStopCatalina
echoversionWhatversionoftomcatareyourunning?
gotoend:
doDebug
shift将%2里的值转到%1
set_EXECJAVA=%_RUNJDB%将变量_EXECJAVA设为_RUNJDB变量的值
setDEBUG_OPTS=-sourcepath"
%CATALINA_HOME%\..\..\jakarta-tomcat-catalina\catalina\src\share"
设定DEBUG_OPTS变量ifnot"
-security"
gotoexecCmd
如果%1不为-security,转到execCmd位置shift将%2里的值转到%1
echoUsingSecurityManager输出该行
setSECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
设定SECURITY_POLICY_FILE变量的值gotoexecCmd转到execCmd位置:
doRun
gotoexecCmd如果%1不为-security,转到execCmd位置
doStart
%OS%"
Windows_NT"
gotonoTitle如果OS变量不为Windows_NT,转到noTitle
set_EXECJAVA=start"
Tomcat"
%_RUNJAVA%设定_EXECJAVA变量的值
gotogotTitle转到gotTitle位置
noTitle
set_EXECJAVA=start%_RUNJAVA%设定_EXECJAVA变量的值
gotTitle
setSECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy
doStop
setACTION=stop将ACTION的变量设为stop
setCATALINA_OPTS=设CATALINA_OPTS为空
gotoexecCmd转到execCmd位置:
doVersion显示tomcat版本号
%_EXECJAVA%-classpath"
%CATALINA_HOME%\server\lib\catalina.jar"
org.apache.catalina.util.ServerInfo执行该命令
gotoend结束该程序:
execCmd
remGetremainingunshiftedcommandlineargumentsandsavetheminthe
以下几行将命令参数存入CMD_LINE_ARGS变量中setCMD_LINE_ARGS=
setArgs
=="
gotodoneSetArgs
setCMD_LINE_ARGS=%CMD_LINE_ARGS%%1
gotosetArgs
doneSetArgsremExecuteJavawiththeapplicableproperties
%JPDA%"
gotodoJpda如果JPDA变量不为空,转到doJpda位置
%SECURITY_POLICY_FILE%"
gotodoSecurity
如果SECURITY_POLICY_FILE变量不为空,转到doSecurity位置如果都没有执行下面命令,并结束该程序
%_EXECJAVA%%JAVA_OPTS%%CATALINA_OPTS%%DEBUG_OPTS%-Djava.endorsed.dirs="
%JAVA_ENDORSED_DIRS%"
-classpath"
%CLASSPATH%"
-Dcatalina.base="
-Dcatalina.home="
-Djava.io.tmpdir="
%MAINCLASS%%CMD_LINE_ARGS%%ACTION%
doSecurity执行下面命令,并结束该程序
-Djava.security.manager-Djava.security.policy=="
doJpda
如果SECURITY_POLICY_FILE变量不为空,转到doSecurityJpda位置,为空执行下面命令,并结束该程序ifnot"
gotodoSecurityJpda
%_EXECJAVA%%JAVA_OPTS%%CATALINA_OPTS%%JPDA_OPTS%%DEBUG_OPTS%-Djava.endorsed.dirs="
doSecurityJpda执行下面命令,并结束该程序
end终结:
catalina.bat咋一看还以为是什么windows程序,可以双击运行,实际上就是调用java命令运行Bootstrap类。
从上面代码可以看出tomcat确实是一个纯java的程序,脚本最后都变成直接使用java命令执行程序,与我们普通写的java程序,没有什么不同。
只不过由于tomcat可以使用各种众多的模式(如debug,Security等),以及各种需要各种参数所以不得不使用脚本来执行。
如果你想看看你到底使用了什么命令可以在&
#8220;
gotodoSecurity&
#8221;
这行下面添加两行。
echo%_EXECJAVA%%JAVA_OPTS%%CATALINA_OPTS%%DEBUG_OPTS%-Djava.endorsed.dir....(下面那段,是一行但太长,折行了)
pause
第一行的命令是打印这具话,系统会将%%里面的变量提换成找到的值并输出。
第二行是暂停程序,你可以通过任意键来恢复运行。
下面是我的程序打印的结果:
start"
"
C:
\ProgramFiles\Java\jdk1.6.0_01\bin\java"
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.util.logging.config.file="
\work\tomcat\conf\logging.properties"
-Xms128m-Xmx512m-Dfile.encoding=UTF8-Duser.timezone=GMT-Djava.security.auth.login.config=C:
\work\tomcat/conf/jaas.config-Djava.endorsed.dirs="
\work\tomcat\common\endorsed"
\ProgramFiles\Java\jdk1.6.0_01\lib\tools.jar;
\work\tomcat\bin\bootstrap.jar"
\work\tomcat"
\work\tomcat\temp"
org.apache.catalina.startup.Bootstrapstartstart"
tomcat"
是另开一个窗口,窗口名是tomcat的意思,你可以去掉这部分,完将你程序打印的拷贝到命令行下,点回车,看是不是一样运行tomcat了。
Catalina.batstartup实际时就将各种系统变量加以总结,输出成这个命令。
呵呵!