Cheng Tang | 697ce24 | 2014-04-27 16:18:17 +0800 | [diff] [blame^] | 1 | @echo off |
| 2 | rem Licensed to the Apache Software Foundation (ASF) under one or more |
| 3 | rem contributor license agreements. See the NOTICE file distributed with |
| 4 | rem this work for additional information regarding copyright ownership. |
| 5 | rem The ASF licenses this file to You under the Apache License, Version 2.0 |
| 6 | rem (the "License"); you may not use this file except in compliance with |
| 7 | rem the License. You may obtain a copy of the License at |
| 8 | rem |
| 9 | rem http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | rem |
| 11 | rem Unless required by applicable law or agreed to in writing, software |
| 12 | rem distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | rem See the License for the specific language governing permissions and |
| 15 | rem limitations under the License. |
| 16 | |
| 17 | if "%OS%" == "Windows_NT" setlocal |
| 18 | rem --------------------------------------------------------------------------- |
| 19 | rem Start/Stop Script for the CATALINA Server |
| 20 | rem |
| 21 | rem Environment Variable Prerequisites |
| 22 | rem |
| 23 | rem Do not set the variables in this script. Instead put them into a script |
| 24 | rem setenv.bat in CATALINA_BASE/bin to keep your customizations separate. |
| 25 | rem |
| 26 | rem CATALINA_HOME May point at your Catalina "build" directory. |
| 27 | rem |
| 28 | rem CATALINA_BASE (Optional) Base directory for resolving dynamic portions |
| 29 | rem of a Catalina installation. If not present, resolves to |
| 30 | rem the same directory that CATALINA_HOME points to. |
| 31 | rem |
| 32 | rem CATALINA_OPTS (Optional) Java runtime options used when the "start", |
| 33 | rem "run" or "debug" command is executed. |
| 34 | rem Include here and not in JAVA_OPTS all options, that should |
| 35 | rem only be used by Tomcat itself, not by the stop process, |
| 36 | rem the version command etc. |
| 37 | rem Examples are heap size, GC logging, JMX ports etc. |
| 38 | rem |
| 39 | rem CATALINA_TMPDIR (Optional) Directory path location of temporary directory |
| 40 | rem the JVM should use (java.io.tmpdir). Defaults to |
| 41 | rem %CATALINA_BASE%\temp. |
| 42 | rem |
| 43 | rem JAVA_HOME Must point at your Java Development Kit installation. |
| 44 | rem Required to run the with the "debug" argument. |
| 45 | rem |
| 46 | rem JRE_HOME Must point at your Java Runtime installation. |
| 47 | rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME |
| 48 | rem are both set, JRE_HOME is used. |
| 49 | rem |
| 50 | rem JAVA_OPTS (Optional) Java runtime options used when any command |
| 51 | rem is executed. |
| 52 | rem Include here and not in CATALINA_OPTS all options, that |
| 53 | rem should be used by Tomcat and also by the stop process, |
| 54 | rem the version command etc. |
| 55 | rem Most options should go into CATALINA_OPTS. |
| 56 | rem |
| 57 | rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories |
| 58 | rem containing some jars in order to allow replacement of APIs |
| 59 | rem created outside of the JCP (i.e. DOM and SAX from W3C). |
| 60 | rem It can also be used to update the XML parser implementation. |
| 61 | rem Defaults to $CATALINA_HOME/endorsed. |
| 62 | rem |
| 63 | rem JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start" |
| 64 | rem command is executed. The default is "dt_socket". |
| 65 | rem |
| 66 | rem JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start" |
| 67 | rem command is executed. The default is 8000. |
| 68 | rem |
| 69 | rem JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start" |
| 70 | rem command is executed. Specifies whether JVM should suspend |
| 71 | rem execution immediately after startup. Default is "n". |
| 72 | rem |
| 73 | rem JPDA_OPTS (Optional) Java runtime options used when the "jpda start" |
| 74 | rem command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS, |
| 75 | rem and JPDA_SUSPEND are ignored. Thus, all required jpda |
| 76 | rem options MUST be specified. The default is: |
| 77 | rem |
| 78 | rem -agentlib:jdwp=transport=%JPDA_TRANSPORT%, |
| 79 | rem address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% |
| 80 | rem |
| 81 | rem LOGGING_CONFIG (Optional) Override Tomcat's logging config file |
| 82 | rem Example (all one line) |
| 83 | rem set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" |
| 84 | rem |
| 85 | rem LOGGING_MANAGER (Optional) Override Tomcat's logging manager |
| 86 | rem Example (all one line) |
| 87 | rem set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" |
| 88 | rem |
| 89 | rem TITLE (Optional) Specify the title of Tomcat window. The default |
| 90 | rem TITLE is Tomcat if it's not specified. |
| 91 | rem Example (all one line) |
| 92 | rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%] |
| 93 | rem |
| 94 | rem |
| 95 | rem |
| 96 | rem $Id: catalina.bat 1344732 2012-05-31 14:08:02Z kkolinko $ |
| 97 | rem --------------------------------------------------------------------------- |
| 98 | |
| 99 | rem Suppress Terminate batch job on CTRL+C |
| 100 | if not ""%1"" == ""run"" goto mainEntry |
| 101 | if "%TEMP%" == "" goto mainEntry |
| 102 | if exist "%TEMP%\%~nx0.run" goto mainEntry |
| 103 | echo Y>"%TEMP%\%~nx0.run" |
| 104 | if not exist "%TEMP%\%~nx0.run" goto mainEntry |
| 105 | echo Y>"%TEMP%\%~nx0.Y" |
| 106 | call "%~f0" %* <"%TEMP%\%~nx0.Y" |
| 107 | rem Use provided errorlevel |
| 108 | set RETVAL=%ERRORLEVEL% |
| 109 | del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1 |
| 110 | exit /B %RETVAL% |
| 111 | :mainEntry |
| 112 | del /Q "%TEMP%\%~nx0.run" >NUL 2>&1 |
| 113 | |
| 114 | rem Guess CATALINA_HOME if not defined |
| 115 | set "CURRENT_DIR=%cd%" |
| 116 | if not "%CATALINA_HOME%" == "" goto gotHome |
| 117 | set "CATALINA_HOME=%CURRENT_DIR%" |
| 118 | if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome |
| 119 | cd .. |
| 120 | set "CATALINA_HOME=%cd%" |
| 121 | cd "%CURRENT_DIR%" |
| 122 | :gotHome |
| 123 | |
| 124 | if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome |
| 125 | echo The CATALINA_HOME environment variable is not defined correctly |
| 126 | echo This environment variable is needed to run this program |
| 127 | goto end |
| 128 | :okHome |
| 129 | |
| 130 | rem Copy CATALINA_BASE from CATALINA_HOME if not defined |
| 131 | if not "%CATALINA_BASE%" == "" goto gotBase |
| 132 | set "CATALINA_BASE=%CATALINA_HOME%" |
| 133 | :gotBase |
| 134 | |
| 135 | rem Ensure that any user defined CLASSPATH variables are not used on startup, |
| 136 | rem but allow them to be specified in setenv.bat, in rare case when it is needed. |
| 137 | set CLASSPATH= |
| 138 | |
| 139 | rem Get standard environment variables |
| 140 | if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome |
| 141 | call "%CATALINA_BASE%\bin\setenv.bat" |
| 142 | goto setenvDone |
| 143 | :checkSetenvHome |
| 144 | if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" |
| 145 | :setenvDone |
| 146 | |
| 147 | rem Get standard Java environment variables |
| 148 | if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath |
| 149 | echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat" |
| 150 | echo This file is needed to run this program |
| 151 | goto end |
| 152 | :okSetclasspath |
| 153 | call "%CATALINA_HOME%\bin\setclasspath.bat" %1 |
| 154 | if errorlevel 1 goto end |
| 155 | |
| 156 | rem Add on extra jar file to CLASSPATH |
| 157 | rem Note that there are no quotes as we do not want to introduce random |
| 158 | rem quotes into the CLASSPATH |
| 159 | if "%CLASSPATH%" == "" goto emptyClasspath |
| 160 | set "CLASSPATH=%CLASSPATH%;" |
| 161 | :emptyClasspath |
| 162 | set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar" |
| 163 | |
| 164 | if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir |
| 165 | set "CATALINA_TMPDIR=%CATALINA_BASE%\temp" |
| 166 | :gotTmpdir |
| 167 | |
| 168 | rem Add tomcat-juli.jar to classpath |
| 169 | rem tomcat-juli.jar can be over-ridden per instance |
| 170 | if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome |
| 171 | set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar" |
| 172 | goto juliClasspathDone |
| 173 | :juliClasspathHome |
| 174 | set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar" |
| 175 | :juliClasspathDone |
| 176 | |
| 177 | if not "%LOGGING_CONFIG%" == "" goto noJuliConfig |
| 178 | set LOGGING_CONFIG=-Dnop |
| 179 | if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig |
| 180 | set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" |
| 181 | :noJuliConfig |
| 182 | set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% |
| 183 | |
| 184 | if not "%LOGGING_MANAGER%" == "" goto noJuliManager |
| 185 | set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager |
| 186 | :noJuliManager |
| 187 | set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER% |
| 188 | |
| 189 | rem ----- Execute The Requested Command --------------------------------------- |
| 190 | |
| 191 | echo Using CATALINA_BASE: "%CATALINA_BASE%" |
| 192 | echo Using CATALINA_HOME: "%CATALINA_HOME%" |
| 193 | echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%" |
| 194 | if ""%1"" == ""debug"" goto use_jdk |
| 195 | echo Using JRE_HOME: "%JRE_HOME%" |
| 196 | goto java_dir_displayed |
| 197 | :use_jdk |
| 198 | echo Using JAVA_HOME: "%JAVA_HOME%" |
| 199 | :java_dir_displayed |
| 200 | echo Using CLASSPATH: "%CLASSPATH%" |
| 201 | |
| 202 | set _EXECJAVA=%_RUNJAVA% |
| 203 | set MAINCLASS=org.apache.catalina.startup.Bootstrap |
| 204 | set ACTION=start |
| 205 | set SECURITY_POLICY_FILE= |
| 206 | set DEBUG_OPTS= |
| 207 | set JPDA= |
| 208 | |
| 209 | if not ""%1"" == ""jpda"" goto noJpda |
| 210 | set JPDA=jpda |
| 211 | if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport |
| 212 | set JPDA_TRANSPORT=dt_socket |
| 213 | :gotJpdaTransport |
| 214 | if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress |
| 215 | set JPDA_ADDRESS=8000 |
| 216 | :gotJpdaAddress |
| 217 | if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend |
| 218 | set JPDA_SUSPEND=n |
| 219 | :gotJpdaSuspend |
| 220 | if not "%JPDA_OPTS%" == "" goto gotJpdaOpts |
| 221 | set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% |
| 222 | :gotJpdaOpts |
| 223 | shift |
| 224 | :noJpda |
| 225 | |
| 226 | if ""%1"" == ""debug"" goto doDebug |
| 227 | if ""%1"" == ""run"" goto doRun |
| 228 | if ""%1"" == ""start"" goto doStart |
| 229 | if ""%1"" == ""stop"" goto doStop |
| 230 | if ""%1"" == ""configtest"" goto doConfigTest |
| 231 | if ""%1"" == ""version"" goto doVersion |
| 232 | |
| 233 | echo Usage: catalina ( commands ... ) |
| 234 | echo commands: |
| 235 | echo debug Start Catalina in a debugger |
| 236 | echo debug -security Debug Catalina with a security manager |
| 237 | echo jpda start Start Catalina under JPDA debugger |
| 238 | echo run Start Catalina in the current window |
| 239 | echo run -security Start in the current window with security manager |
| 240 | echo start Start Catalina in a separate window |
| 241 | echo start -security Start in a separate window with security manager |
| 242 | echo stop Stop Catalina |
| 243 | echo configtest Run a basic syntax check on server.xml |
| 244 | echo version What version of tomcat are you running? |
| 245 | goto end |
| 246 | |
| 247 | :doDebug |
| 248 | shift |
| 249 | set _EXECJAVA=%_RUNJDB% |
| 250 | set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java" |
| 251 | if not ""%1"" == ""-security"" goto execCmd |
| 252 | shift |
| 253 | echo Using Security Manager |
| 254 | set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| 255 | goto execCmd |
| 256 | |
| 257 | :doRun |
| 258 | shift |
| 259 | if not ""%1"" == ""-security"" goto execCmd |
| 260 | shift |
| 261 | echo Using Security Manager |
| 262 | set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| 263 | goto execCmd |
| 264 | |
| 265 | :doStart |
| 266 | shift |
| 267 | if not "%OS%" == "Windows_NT" goto noTitle |
| 268 | if "%TITLE%" == "" set TITLE=Tomcat |
| 269 | set _EXECJAVA=start "%TITLE%" %_RUNJAVA% |
| 270 | goto gotTitle |
| 271 | :noTitle |
| 272 | set _EXECJAVA=start %_RUNJAVA% |
| 273 | :gotTitle |
| 274 | if not ""%1"" == ""-security"" goto execCmd |
| 275 | shift |
| 276 | echo Using Security Manager |
| 277 | set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| 278 | goto execCmd |
| 279 | |
| 280 | :doStop |
| 281 | shift |
| 282 | set ACTION=stop |
| 283 | set CATALINA_OPTS= |
| 284 | goto execCmd |
| 285 | |
| 286 | :doConfigTest |
| 287 | shift |
| 288 | set ACTION=configtest |
| 289 | set CATALINA_OPTS= |
| 290 | goto execCmd |
| 291 | |
| 292 | :doVersion |
| 293 | %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo |
| 294 | goto end |
| 295 | |
| 296 | |
| 297 | :execCmd |
| 298 | rem Get remaining unshifted command line arguments and save them in the |
| 299 | set CMD_LINE_ARGS= |
| 300 | :setArgs |
| 301 | if ""%1""=="""" goto doneSetArgs |
| 302 | set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 |
| 303 | shift |
| 304 | goto setArgs |
| 305 | :doneSetArgs |
| 306 | |
| 307 | rem Execute Java with the applicable properties |
| 308 | if not "%JPDA%" == "" goto doJpda |
| 309 | if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity |
| 310 | %_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% |
| 311 | goto end |
| 312 | :doSecurity |
| 313 | %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |
| 314 | goto end |
| 315 | :doJpda |
| 316 | if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda |
| 317 | %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_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% |
| 318 | goto end |
| 319 | :doSecurityJpda |
| 320 | %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% |
| 321 | goto end |
| 322 | |
| 323 | :end |