| @echo off |
| rem Licensed to the Apache Software Foundation (ASF) under one or more |
| rem contributor license agreements. See the NOTICE file distributed with |
| rem this work for additional information regarding copyright ownership. |
| rem The ASF licenses this file to You under the Apache License, Version 2.0 |
| rem (the "License"); you may not use this file except in compliance with |
| rem the License. You may obtain a copy of the License at |
| rem |
| rem http://www.apache.org/licenses/LICENSE-2.0 |
| rem |
| rem Unless required by applicable law or agreed to in writing, software |
| rem distributed under the License is distributed on an "AS IS" BASIS, |
| rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| rem See the License for the specific language governing permissions and |
| rem limitations under the License. |
| |
| rem --------------------------------------------------------------------------- |
| rem Start/Stop Script for the CATALINA Server |
| rem |
| rem Environment Variable Prerequisites |
| rem |
| rem Do not set the variables in this script. Instead put them into a script |
| rem setenv.bat in CATALINA_BASE/bin to keep your customizations separate. |
| rem |
| rem CATALINA_HOME May point at your Catalina "build" directory. |
| rem |
| rem CATALINA_BASE (Optional) Base directory for resolving dynamic portions |
| rem of a Catalina installation. If not present, resolves to |
| rem the same directory that CATALINA_HOME points to. |
| rem |
| rem CATALINA_OPTS (Optional) Java runtime options used when the "start", |
| rem "run" or "debug" command is executed. |
| rem Include here and not in JAVA_OPTS all options, that should |
| rem only be used by Tomcat itself, not by the stop process, |
| rem the version command etc. |
| rem Examples are heap size, GC logging, JMX ports etc. |
| rem |
| rem CATALINA_TMPDIR (Optional) Directory path location of temporary directory |
| rem the JVM should use (java.io.tmpdir). Defaults to |
| rem %CATALINA_BASE%\temp. |
| rem |
| rem JAVA_HOME Must point at your Java Development Kit installation. |
| rem Required to run the with the "debug" argument. |
| rem |
| rem JRE_HOME Must point at your Java Runtime installation. |
| rem Defaults to JAVA_HOME if empty. If JRE_HOME and JAVA_HOME |
| rem are both set, JRE_HOME is used. |
| rem |
| rem JAVA_OPTS (Optional) Java runtime options used when any command |
| rem is executed. |
| rem Include here and not in CATALINA_OPTS all options, that |
| rem should be used by Tomcat and also by the stop process, |
| rem the version command etc. |
| rem Most options should go into CATALINA_OPTS. |
| rem |
| rem JAVA_ENDORSED_DIRS (Optional) Lists of of semi-colon separated directories |
| rem containing some jars in order to allow replacement of APIs |
| rem created outside of the JCP (i.e. DOM and SAX from W3C). |
| rem It can also be used to update the XML parser implementation. |
| rem Defaults to $CATALINA_HOME/endorsed. |
| rem |
| rem JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start" |
| rem command is executed. The default is "dt_socket". |
| rem |
| rem JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start" |
| rem command is executed. The default is localhost:8000. |
| rem |
| rem JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start" |
| rem command is executed. Specifies whether JVM should suspend |
| rem execution immediately after startup. Default is "n". |
| rem |
| rem JPDA_OPTS (Optional) Java runtime options used when the "jpda start" |
| rem command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS, |
| rem and JPDA_SUSPEND are ignored. Thus, all required jpda |
| rem options MUST be specified. The default is: |
| rem |
| rem -agentlib:jdwp=transport=%JPDA_TRANSPORT%, |
| rem address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% |
| rem |
| rem LOGGING_CONFIG (Optional) Override Tomcat's logging config file |
| rem Example (all one line) |
| rem set LOGGING_CONFIG="-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" |
| rem |
| rem LOGGING_MANAGER (Optional) Override Tomcat's logging manager |
| rem Example (all one line) |
| rem set LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" |
| rem |
| rem TITLE (Optional) Specify the title of Tomcat window. The default |
| rem TITLE is Tomcat if it's not specified. |
| rem Example (all one line) |
| rem set TITLE=Tomcat.Cluster#1.Server#1 [%DATE% %TIME%] |
| rem --------------------------------------------------------------------------- |
| |
| setlocal |
| |
| rem Suppress Terminate batch job on CTRL+C |
| if not ""%1"" == ""run"" goto mainEntry |
| if "%TEMP%" == "" goto mainEntry |
| if exist "%TEMP%\%~nx0.run" goto mainEntry |
| echo Y>"%TEMP%\%~nx0.run" |
| if not exist "%TEMP%\%~nx0.run" goto mainEntry |
| echo Y>"%TEMP%\%~nx0.Y" |
| call "%~f0" %* <"%TEMP%\%~nx0.Y" |
| rem Use provided errorlevel |
| set RETVAL=%ERRORLEVEL% |
| del /Q "%TEMP%\%~nx0.Y" >NUL 2>&1 |
| exit /B %RETVAL% |
| :mainEntry |
| del /Q "%TEMP%\%~nx0.run" >NUL 2>&1 |
| |
| rem Guess CATALINA_HOME if not defined |
| 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 Copy CATALINA_BASE from CATALINA_HOME if not defined |
| if not "%CATALINA_BASE%" == "" goto gotBase |
| set "CATALINA_BASE=%CATALINA_HOME%" |
| :gotBase |
| |
| rem Ensure that neither CATALINA_HOME nor CATALINA_BASE contains a semi-colon |
| rem as this is used as the separator in the classpath and Java provides no |
| rem mechanism for escaping if the same character appears in the path. Check this |
| rem by replacing all occurrences of ';' with '' and checking that neither |
| rem CATALINA_HOME nor CATALINA_BASE have changed |
| if "%CATALINA_HOME%" == "%CATALINA_HOME:;=%" goto homeNoSemicolon |
| echo Using CATALINA_HOME: "%CATALINA_HOME%" |
| echo Unable to start as CATALINA_HOME contains a semicolon (;) character |
| goto end |
| :homeNoSemicolon |
| |
| if "%CATALINA_BASE%" == "%CATALINA_BASE:;=%" goto baseNoSemicolon |
| echo Using CATALINA_BASE: "%CATALINA_BASE%" |
| echo Unable to start as CATALINA_BASE contains a semicolon (;) character |
| goto end |
| :baseNoSemicolon |
| |
| rem Ensure that any user defined CLASSPATH variables are not used on startup, |
| rem but allow them to be specified in setenv.bat, in rare case when it is needed. |
| set CLASSPATH= |
| |
| rem Get standard environment variables |
| if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome |
| call "%CATALINA_BASE%\bin\setenv.bat" |
| goto setenvDone |
| :checkSetenvHome |
| if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" |
| :setenvDone |
| |
| rem Get standard Java environment variables |
| if exist "%CATALINA_HOME%\bin\setclasspath.bat" goto okSetclasspath |
| echo Cannot find "%CATALINA_HOME%\bin\setclasspath.bat" |
| echo This file is needed to run this program |
| goto end |
| :okSetclasspath |
| call "%CATALINA_HOME%\bin\setclasspath.bat" %1 |
| if errorlevel 1 goto end |
| |
| rem Add on extra jar file to CLASSPATH |
| rem Note that there are no quotes as we do not want to introduce random |
| rem quotes into the CLASSPATH |
| if "%CLASSPATH%" == "" goto emptyClasspath |
| set "CLASSPATH=%CLASSPATH%;" |
| :emptyClasspath |
| set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar" |
| |
| if not "%CATALINA_TMPDIR%" == "" goto gotTmpdir |
| set "CATALINA_TMPDIR=%CATALINA_BASE%\temp" |
| :gotTmpdir |
| |
| rem Add tomcat-juli.jar to classpath |
| rem tomcat-juli.jar can be over-ridden per instance |
| if not exist "%CATALINA_BASE%\bin\tomcat-juli.jar" goto juliClasspathHome |
| set "CLASSPATH=%CLASSPATH%;%CATALINA_BASE%\bin\tomcat-juli.jar" |
| goto juliClasspathDone |
| :juliClasspathHome |
| set "CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\tomcat-juli.jar" |
| :juliClasspathDone |
| |
| if not "%LOGGING_CONFIG%" == "" goto noJuliConfig |
| set LOGGING_CONFIG=-Dnop |
| if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig |
| set LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" |
| :noJuliConfig |
| set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%" |
| |
| if not "%LOGGING_MANAGER%" == "" goto noJuliManager |
| set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager |
| :noJuliManager |
| set "JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%" |
| |
| rem ----- Execute The Requested Command --------------------------------------- |
| |
| echo Using CATALINA_BASE: "%CATALINA_BASE%" |
| echo Using CATALINA_HOME: "%CATALINA_HOME%" |
| echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%" |
| if ""%1"" == ""debug"" goto use_jdk |
| echo Using JRE_HOME: "%JRE_HOME%" |
| goto java_dir_displayed |
| :use_jdk |
| echo Using JAVA_HOME: "%JAVA_HOME%" |
| :java_dir_displayed |
| echo Using CLASSPATH: "%CLASSPATH%" |
| |
| 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_socket |
| :gotJpdaTransport |
| if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress |
| set JPDA_ADDRESS=localhost:8000 |
| :gotJpdaAddress |
| if not "%JPDA_SUSPEND%" == "" goto gotJpdaSuspend |
| set JPDA_SUSPEND=n |
| :gotJpdaSuspend |
| if not "%JPDA_OPTS%" == "" goto gotJpdaOpts |
| set JPDA_OPTS=-agentlib:jdwp=transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND% |
| :gotJpdaOpts |
| shift |
| :noJpda |
| |
| if ""%1"" == ""debug"" goto doDebug |
| if ""%1"" == ""run"" goto doRun |
| if ""%1"" == ""start"" goto doStart |
| if ""%1"" == ""stop"" goto doStop |
| if ""%1"" == ""configtest"" goto doConfigTest |
| if ""%1"" == ""version"" goto doVersion |
| |
| echo Usage: catalina ( commands ... ) |
| 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 configtest Run a basic syntax check on server.xml |
| echo version What version of tomcat are you running? |
| goto end |
| |
| :doDebug |
| shift |
| set _EXECJAVA=%_RUNJDB% |
| set DEBUG_OPTS=-sourcepath "%CATALINA_HOME%\..\..\java" |
| if not ""%1"" == ""-security"" goto execCmd |
| shift |
| echo Using Security Manager |
| set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| goto execCmd |
| |
| :doRun |
| shift |
| if not ""%1"" == ""-security"" goto execCmd |
| shift |
| echo Using Security Manager |
| set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| goto execCmd |
| |
| :doStart |
| shift |
| if "%TITLE%" == "" set TITLE=Tomcat |
| set _EXECJAVA=start "%TITLE%" %_RUNJAVA% |
| if not ""%1"" == ""-security"" goto execCmd |
| shift |
| echo Using Security Manager |
| set "SECURITY_POLICY_FILE=%CATALINA_BASE%\conf\catalina.policy" |
| goto execCmd |
| |
| :doStop |
| shift |
| set ACTION=stop |
| set CATALINA_OPTS= |
| goto execCmd |
| |
| :doConfigTest |
| shift |
| set ACTION=configtest |
| set CATALINA_OPTS= |
| goto execCmd |
| |
| :doVersion |
| %_EXECJAVA% -classpath "%CATALINA_HOME%\lib\catalina.jar" org.apache.catalina.util.ServerInfo |
| goto end |
| |
| |
| :execCmd |
| rem Get remaining unshifted command line arguments and save them in the |
| set CMD_LINE_ARGS= |
| :setArgs |
| if ""%1""=="""" goto doneSetArgs |
| set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 |
| shift |
| goto setArgs |
| :doneSetArgs |
| |
| rem Execute Java with the applicable properties |
| if not "%JPDA%" == "" goto doJpda |
| if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity |
| %_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% |
| goto end |
| :doSecurity |
| %_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% |
| goto end |
| :doJpda |
| if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda |
| %_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% |
| goto end |
| :doSecurityJpda |
| %_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% |
| goto end |
| |
| :end |