@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 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 JSSE_OPTS (Optional) Java runtime options used to control the TLS | |
rem implementation when JSSE is used. Default is: | |
rem "-Djdk.tls.ephemeralDHKeySize=2048" | |
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 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 "%JSSE_OPTS%" == "" goto gotJsseOpts | |
set JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048" | |
:gotJsseOpts | |
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%" | |
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=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% %JPDA_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 | |
:doSecurityJpda | |
%_EXECJAVA% %JAVA_OPTS% %JPDA_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 | |
:end |