blob: 7b3346fd2e43ff38e328d61239d421197ce9c96a [file] [log] [blame]
@echo off
rem Script for starting and stopping the kernel
if "%OS%" == "Windows_NT" setlocal
rem Derive full path for script (includes trailing backslash)
set SCRIPT_DIR=%~dp0
if exist "%SCRIPT_DIR%setupVars.bat" (
call "%SCRIPT_DIR%setupVars.bat"
if not "%ERRORLEVEL%"=="0" (
if "%OS%" == "Windows_NT" endlocal
exit /B %ERRORLEVEL%
)
) else (
echo Cannot set up environment. "setupVars.bat" file missing.
if "%OS%" == "Windows_NT" endlocal
exit /B 1
)
rem Select command we are to run
rem First parm is command
set COMMAND=%~1
rem Rest are parameters - shift done in subroutines
rem Switch on COMMAND in {"start","stop"}
if "%COMMAND%" == "start" (
call :doStartCommand %*
if "%OS%" == "Windows_NT" endlocal
exit /B 0
)
if "%COMMAND%" == "stop" (
call :doStopCommand %*
if "%OS%" == "Windows_NT" endlocal
exit /B 0
)
echo Unknown command: %COMMAND%
if "%OS%" == "Windows_NT" endlocal
exit /B 1
rem ------------------ Subroutines
rem ------------------------------
:doStartCommand
shift
rem The shift must be here :()
rem Check further file that needs to exist
for %%I in ("%KERNEL_HOME%\bin\jmxPermissions.vbs") do if not exist "%%~I" (
echo File "%%~I" does not exist but is required to continue.
exit /B 1
)
rem Set defaults
set CONFIG_DIR=%KERNEL_HOME%\configuration
set CLEAN_FLAG=
set NO_START_FLAG=
set DEBUG_FLAG=
set DEBUG_PORT=8000
set SUSPEND=n
if not defined JMX_PORT set JMX_PORT=9875
if not defined KEYSTORE_PASSWORD set KEYSTORE_PASSWORD=changeit
set ADDITIONAL_ARGS=
rem Loop through options
:startOptionLoop
if "%~1"=="" goto endStartOptionLoop
if "%~1"=="-debug" goto debug
if "%~1"=="-clean" goto clean
if "%~1"=="-configDir" goto configDir
if "%~1"=="-jmxport" goto jmxport
if "%~1"=="-keystore" goto keystore
if "%~1"=="-keystorePassword" goto keystorePassword
if "%~1"=="-noStart" goto noStart
if "%~1"=="-suspend" goto suspend
if "%~1"=="-shell" goto shell
set ADDITIONAL_ARGS=%ADDITIONAL_ARGS% "%~1"
:continueStartOptionLoop
shift
goto startOptionLoop
:debug
set DEBUG_FLAG=1
set PORT_CANDIDATE=%~2
if not "%PORT_CANDIDATE:~0,1%"=="-" (
set DEBUG_PORT=%PORT_CANDIDATE%
shift
)
goto continueStartOptionLoop
:clean
set CLEAN_FLAG=1
goto continueStartOptionLoop
:configDir
set CONFIG_DIR=%~2
rem unless absolute, treat as relative to kernel home
if "%CONFIG_DIR:~1%"=="\" goto absoluteConfigDir
if "%CONFIG_DIR:~1,2%"==":\" goto absoluteConfigDir
set CONFIG_DIR=%KERNEL_HOME%\%CONFIG_DIR%
:absoluteConfigDir
shift
goto continueStartOptionLoop
:jmxport
set JMX_PORT=%~2
shift
goto continueStartOptionLoop
:keystore
set KEYSTORE_PATH=%~2
shift
goto continueStartOptionLoop
:keystorePassword
set KEYSTORE_PASSWORD=%~2
shift
goto continueStartOptionLoop
:noStart
set NO_START_FLAG=1
goto continueStartOptionLoop
:suspend
set SUSPEND=y
goto continueStartOptionLoop
:shell
set SHELL_FLAG=1
goto continueStartOptionLoop
:endStartOptionLoop
rem Adjust permissions if necessary
cscript //NoLogo "%KERNEL_HOME%\bin\jmxPermissions.vbs" "%CONFIG_DIR%\"
rem Adjust options now all are known
if "%KEYSTORE_PATH%"=="" set KEYSTORE_PATH=%CONFIG_DIR%\keystore
if not "%DEBUG_FLAG%"=="" set DEBUG_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=%DEBUG_PORT%,server=y,suspend=%SUSPEND%
rem do Clean work:
if not "%CLEAN_FLAG%"=="" (
echo Cleaning the serviceability and working directories...
rmdir /Q /S "%KERNEL_HOME%\serviceability" 2>nul
rmdir /Q /S "%KERNEL_HOME%\work" 2>nul
set LAUNCH_OPTS=%LAUNCH_OPTS% -clean
)
rem do Shell work:
if not "%SHELL_FLAG%"=="" (
echo "Warning: Kernel shell not supported; -shell option ignored."
rem set LAUNCH_OPTS=%LAUNCH_OPTS% -Forg.eclipse.virgo.kernel.shell.local=true
)
rem Set JMX options
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.port=%JMX_PORT%
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.authenticate=true
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.login.config=virgo-kernel
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.access.file="%CONFIG_DIR%\org.eclipse.virgo.kernel.jmxremote.access.properties"
set JMX_OPTS=%JMX_OPTS% -Djavax.net.ssl.keyStore="%KEYSTORE_PATH%"
set JMX_OPTS=%JMX_OPTS% -Djavax.net.ssl.keyStorePassword=%KEYSTORE_PASSWORD%
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.ssl=true
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.ssl.need.client.auth=false
if not "%NO_START_FLAG%"=="" goto :eof
rem ensure that the tmp directory exists:
set TMP_DIR="%KERNEL_HOME%\work\tmp"
if not exist "%TMP_DIR%" mkdir "%TMP_DIR%"
set JAVA_OPTS=-Xmx1024m -XX:MaxMetaspaceSize=512m %JAVA_OPTS%
rem Run the server
rem Marshall parameters
set KERNEL_JAVA_PARMS=%JAVA_OPTS% %DEBUG_OPTS% %JMX_OPTS%
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -XX:+HeapDumpOnOutOfMemoryError
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -XX:ErrorFile="%KERNEL_HOME%\serviceability\error.log"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -XX:HeapDumpPath="%KERNEL_HOME%\serviceability\heap_dump.hprof"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djava.security.auth.login.config="%CONFIG_DIR%\org.eclipse.virgo.kernel.authentication.config"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dorg.eclipse.virgo.kernel.authentication.file="%CONFIG_DIR%\org.eclipse.virgo.kernel.users.properties"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djava.io.tmpdir="%TMP_DIR%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dorg.eclipse.virgo.kernel.home="%KERNEL_HOME%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dosgi.java.profile="file:%CONFIG_DIR%\java-server.profile"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dssh.server.keystore="%CONFIG_DIR%/hostkey.ser"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dorg.eclipse.virgo.kernel.config="%CONFIG_DIR%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dosgi.sharedConfiguration.area="%CONFIG_DIR%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Declipse.ignoreApp="true"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dosgi.install.area="%KERNEL_HOME%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dosgi.configuration.area="%KERNEL_HOME%\work"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dosgi.frameworkClassPath="%FWCLASSPATH%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Djava.endorsed.dirs="%KERNEL_HOME%\lib\endorsed"
rem If Windows 10 set system property os.name=win32, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=486353
for /f "tokens=4 delims=] " %%i in ('ver') do set VIRGO_DETECTED_WIN_VERSION=%%i
if "%VIRGO_DETECTED_WIN_VERSION:~0,1%"=="1" set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -Dos.name=win32
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -classpath "%CLASSPATH%"
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% org.eclipse.equinox.launcher.Main
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% -noExit
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% %LAUNCH_OPTS%
set KERNEL_JAVA_PARMS=%KERNEL_JAVA_PARMS% %ADDITIONAL_ARGS%
rem Now run it
PUSHD %KERNEL_HOME%
"%JAVA_HOME%\bin\java" %KERNEL_JAVA_PARMS%
POPD
goto :eof
rem ------------------------------
:doStopCommand
shift
rem The shift must be here :()
rem Set defaults
set CONFIG_DIR=%KERNEL_HOME%\configuration
if not defined TRUSTSTORE_PATH set TRUSTSTORE_PATH=%CONFIG_DIR%\keystore
if not defined TRUSTSTORE_PASSWORD set TRUSTSTORE_PASSWORD=changeit
if not defined JMX_PORT set JMX_PORT=9875
set OTHER_ARGS=
rem Loop through options
:stopOptionLoop
if "%~1"=="" goto endStopOptionLoop
if "%~1"=="-truststore" goto truststoreStop
if "%~1"=="-truststorePassword" goto truststorePasswordStop
if "%~1"=="-configDir" goto configDirStop
if "%~1"=="-jmxport" goto jmxportStop
set OTHER_ARGS=%OTHER_ARGS% "%~1"
:continueStopOptionLoop
shift
goto stopOptionLoop
:truststoreStop
set TRUSTSTORE_PATH=%~2
shift
goto continueStopOptionLoop
:truststorePasswordStop
set TRUSTSTORE_PASSWORD=%~2
shift
goto continueStopOptionLoop
:configDirStop
set CONFIG_DIR=%~2
rem unless absolute, treat as relative to kernel home
if "%CONFIG_DIR:~1%"=="\" goto absoluteConfigDirStop
if "%CONFIG_DIR:~1,2%"==":\" goto absoluteConfigDirStop
set CONFIG_DIR=%KERNEL_HOME%\%CONFIG_DIR%
:absoluteConfigDirStop
shift
goto continueStopOptionLoop
:jmxportStop
set JMX_PORT=%~2
shift
goto continueStopOptionLoop
:endStopOptionLoop
rem Call shutdown client
rem Extend JMX options
set JMX_OPTS=%JMX_OPTS% -Djavax.net.ssl.trustStore="%TRUSTSTORE_PATH%"
set JMX_OPTS=%JMX_OPTS% -Djavax.net.ssl.trustStorePassword=%TRUSTSTORE_PASSWORD%
set OTHER_ARGS=%OTHER_ARGS% -jmxport %JMX_PORT%
rem Marshall parameters
set SHUTDOWN_PARMS= %JAVA_OPTS% %JMX_OPTS%
set SHUTDOWN_PARMS=%SHUTDOWN_PARMS% -classpath "%CLASSPATH%"
set SHUTDOWN_PARMS=%SHUTDOWN_PARMS% -Dorg.eclipse.virgo.kernel.home="%KERNEL_HOME%"
set SHUTDOWN_PARMS=%SHUTDOWN_PARMS% -Dorg.eclipse.virgo.kernel.authentication.file="%CONFIG_DIR%\org.eclipse.virgo.kernel.users.properties"
set SHUTDOWN_PARMS=%SHUTDOWN_PARMS% org.eclipse.virgo.nano.shutdown.ShutdownClient
set SHUTDOWN_PARMS=%SHUTDOWN_PARMS% %OTHER_ARGS%
rem Run Java program
PUSHD %KERNEL_HOME%
"%JAVA_HOME%\bin\java" %SHUTDOWN_PARMS%
POPD
goto :eof