startup.bat

startup.bat

@echo off
color 0a

set CURRENT_DIR=%cd%
if not "%CATALINA_HOME%" == "" goto gotHome
set CATALINA_HOME=%CURRENT_DIR%/../
:gotHome
echo. %CATALINA_HOME%
if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat"
::如果存在setenv.bat,call之
if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath
::如果存在setclasspath.bat,跳转到okSetclasspath
echo Cannot find %CATALINA_HOME%\bin\setclasspath.bat
goto end
::找不到setclasspath.bat,结束程序
:okSetclasspath
set BASEDIR=%CATALINA_HOME%
::BASEDIR环境变量是setclasspath.bat需要用到的变量,在调用之前我们提前把它设置好。
call "%CATALINA_HOME%\bin\setclasspath.bat" 
::顾名思义,setclasspath.bat就是用来设置环境变量的批处理文件,文件内容附在文章后
set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar
::这是把CLASSPATH在原来的基础上增加了%CATALINA_HOME%\bin\bootstrap.jar。注意,此处的bootstrap.jar是Tomcat的内核,它同时用到了commons-daemon.jar和commons-logging-api.jar等jar包,但是我们并没有把它们包含在环境变量中,怎么找到的呢?其实这是通过在bootstrap.jar中的MANIFEST.MF设置的。
::接下又是设置一系列环境变量:
if not "%CATALINA_BASE%" == "" goto gotBase
set CATALINA_BASE=%CATALINA_HOME%
:gotBase
if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir
set CATALINA_TMPDIR=%CATALINA_BASE%\temp
:gotTmpdir
::接下来打印出各个环境变量:
echo Using CATALINA_BASE:   %CATALINA_BASE%
echo Using CATALINA_HOME:   %CATALINA_HOME%
echo Using CATALINA_TMPDIR: %CATALINA_TMPDIR%
echo Using JAVA_HOME:       %JAVA_HOME%
set _RUNJAVA=%JAVA_HOME%\bin\java
::_RUNJAVA这个环境变量是在setclasspath.bat中设置的。
set MAINCLASS=org.apache.catalina.startup.Bootstrap
::设置启动类。
set ACTION=start
if ""%1"" == ""start"" goto doStart
if ""%1"" == ""stop"" goto doStop
:doStart
if not "%OS%" == "Windows_NT" goto noTitle
set _EXECJAVA=start "Tomcat" %_RUNJAVA%
::我们知道,在Windows系统的命令行中如果用start运行某个程序,就会启动一个新窗口,这里的"Tomcat"实际上就是为新窗口设置标题而已。
goto gotTitle
:noTitle
set _EXECJAVA=start %_RUNJAVA%
:gotTitle
goto execCmd
:doStop
set ACTION=stop

:execCmd
set JAVA_OPTS= -server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true 
echo Using _EXECJAVA:  %_EXECJAVA%
echo.
::接下来的语句貌似很复杂的样子,其实就是执行_EXECJAVA这个变量所指定的内容。
echo ExecCmd : %_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%
%_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%

:end

::set JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true " 
::java %JAVA_OPTS% -jar bootstrap.jar

setclasspath.bat

@echo off
color 0a

echo.------------------------
set JAVA_HOME = "E:\karl\server\jdk\jdk1.6.0_21"
::set BASEDIR = "E:\karl\server\Tomcat 6.0\bin"

if not "%JAVA_HOME%" == "" goto gotJavaHome
echo The JAVA_HOME environment variable is not defined
goto end
:gotJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
goto okJavaHome
:noJavaHome
echo The JAVA_HOME environment variable is not defined correctly
echo end
:okJavaHome
if not "%BASEDIR%" == "" goto gotBasedir
echo The BASEDIR environment variable is not defined
goto end
:gotBasedir
if exist "%BASEDIR%\bin\setclasspath.bat" goto okBasedir
echo The BASEDIR environment variable is not defined correctly
goto end
:okBasedir
set JAVA_ENDORSED_DIRS=%BASEDIR%\common\endorsed
set CLASSPATH=%JAVA_HOME%\lib\tools.jar
set _RUNJAVA="%JRE_HOME%\bin\java"
:end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值