331 lines
13 KiB
Batchfile
331 lines
13 KiB
Batchfile
|
@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 For supported commands call "catalina.bat help" or see the usage section
|
||
|
rem towards the end of this file.
|
||
|
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 WHEN RUNNING TOMCAT AS A WINDOWS SERVICE:
|
||
|
rem Note that the environment variables that affect the behavior of this
|
||
|
rem script will have no effect at all on Windows Services. As such, any
|
||
|
rem local customizations made in a CATALINA_BASE/bin/setenv.bat script
|
||
|
rem will also have no effect on Tomcat when launched as a Windows Service.
|
||
|
rem The configuration that controls Windows Services is stored in the Windows
|
||
|
rem Registry, and is most conveniently maintained using the "tomcat11w.exe"
|
||
|
rem maintenance utility.
|
||
|
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 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 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 CATALINA_LOGGING_CONFIG (Optional) Override Tomcat's logging config file
|
||
|
rem Example (all one line)
|
||
|
rem set CATALINA_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 "%JSSE_OPTS%" == "" goto gotJsseOpts
|
||
|
set "JSSE_OPTS=-Djdk.tls.ephemeralDHKeySize=2048"
|
||
|
:gotJsseOpts
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"
|
||
|
|
||
|
if not "%CATALINA_LOGGING_CONFIG%" == "" goto noJuliConfig
|
||
|
set CATALINA_LOGGING_CONFIG=-Dnop
|
||
|
if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuliConfig
|
||
|
set CATALINA_LOGGING_CONFIG=-Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties"
|
||
|
:noJuliConfig
|
||
|
|
||
|
if not "%LOGGING_MANAGER%" == "" goto noJuliManager
|
||
|
set LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
|
||
|
:noJuliManager
|
||
|
|
||
|
rem Configure module start-up parameters
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.lang=ALL-UNNAMED"
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.io=ALL-UNNAMED"
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.util=ALL-UNNAMED"
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.base/java.util.concurrent=ALL-UNNAMED"
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
|
||
|
set "JAVA_OPTS=%JAVA_OPTS% --enable-native-access=ALL-UNNAMED"
|
||
|
|
||
|
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%"
|
||
|
echo Using CATALINA_OPTS: "%CATALINA_OPTS%"
|
||
|
|
||
|
set _EXECJAVA="%_RUNJAVA%"
|
||
|
set MAINCLASS=org.apache.catalina.startup.Bootstrap
|
||
|
set ACTION=start
|
||
|
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 jpda start Start Catalina under JPDA debugger
|
||
|
echo run Start Catalina in the current window
|
||
|
echo start Start Catalina in a separate window
|
||
|
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"
|
||
|
goto execCmd
|
||
|
|
||
|
:doRun
|
||
|
shift
|
||
|
goto execCmd
|
||
|
|
||
|
:doStart
|
||
|
shift
|
||
|
if "%TITLE%" == "" set TITLE=Tomcat
|
||
|
set _EXECJAVA=start "%TITLE%" "%_RUNJAVA%"
|
||
|
goto execCmd
|
||
|
|
||
|
:doStop
|
||
|
shift
|
||
|
set ACTION=stop
|
||
|
set CATALINA_OPTS=
|
||
|
goto execCmd
|
||
|
|
||
|
:doConfigTest
|
||
|
shift
|
||
|
set ACTION=configtest
|
||
|
set CATALINA_OPTS=
|
||
|
goto execCmd
|
||
|
|
||
|
:doVersion
|
||
|
%_EXECJAVA% %JAVA_OPTS% -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
|
||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||
|
goto end
|
||
|
:doJpda
|
||
|
%_EXECJAVA% %CATALINA_LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %JPDA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
|
||
|
goto end
|
||
|
|
||
|
:end
|