Spring Boot Fat Jar Runner

From Chorke Wiki
Jump to navigation Jump to search

Batch Script

@echo off
if "%OS%" == "Windows_NT" setlocal EnableExtensions EnableDelayedExpansion
set "CKI_OPTION_NAME=%1"


rem
rem @author    Chorke Economia<devs@chorke.org>
rem @vendor    Chorke Economia, Inc.
rem @web       chorke.org
rem @version   1.0.00
rem @since     1.0.00
rem


call :init_ebis
call :init_opts
call :ebis_case
goto :eof


:init_ebis
rem initialization of varible
if "%CKI_SYSTEM_NAME%" == "" set "CKI_SYSTEM_NAME=ebis"
if "%CKI_DAEMON_NAME%" == "" set "CKI_DAEMON_NAME=ebisd"
if "%CKI_SYSTEM_PORT%" == "" set "CKI_SYSTEM_PORT=11190"
if "%CKI_SOURCE_BTCH%" == "" set "CKI_SOURCE_BTCH=%~dp0%~nx0"
if "%CKI_PARENT_PATH%" == "" set "CKI_PARENT_PATH=%~dp0"
if "%CKI_ASSETS_PATH%" == "" set "CKI_ASSETS_PATH=%USERPROFILE%\.chorke\economia"
if "%CKI_PIDLOG_PATH%" == "" set "CKI_PIDLOG_PATH=%CKI_ASSETS_PATH%\etc\pid\%CKI_SYSTEM_NAME%.pid"


rem user and user home
if "%USER%" == "" set "USER=%USERNAME%"
if "%HOME%" == "" set "HOME=%USERPROFILE%"
if "%HAPI_HOME%" == "" set "HAPI_HOME=%CKI_ASSETS_PATH%\var\%CKI_SYSTEM_NAME%\hapi"


rem program/deamon home
rem if "%CKI_HOME%" == "" set "CKI_HOME=%CKI_PARENT_PATH%.."
if "%CKI_HOME%" == "" set "CKI_HOME=%CKI_PARENT_PATH%"
pushd "%CKI_HOME%"
set "CKI_HOME=%CD%"
echo "%CKI_HOME%"

rem create swap gpl dir
if not exist "%CKI_HOME%\usr\local\bin\ebis\" mkdir "%CKI_HOME%\usr\local\bin\ebis\"

if "%JCLASS_MAIN%" == "" set "JCLASS_MAIN=org.chorke.boot.BootstrapApplication"
set "JCLASS_PATH=%CKI_HOME%\etc\ebis"
set "JCLASS_PATH=%JCLASS_PATH%;%CKI_HOME%\usr\bin\ebis\*"
set "JCLASS_PATH=%JCLASS_PATH%;%CKI_HOME%\lib\ebis\pro\ebis\*"
set "JCLASS_PATH=%JCLASS_PATH%;%CKI_HOME%\lib\ebis\gpl\*"
set "JCLASS_PATH=%JCLASS_PATH%;%CKI_HOME%\lib\ebis\pro\comn\*"
set "JCLASS_PATH=%JCLASS_PATH%;%CKI_HOME%\lib\ebis\pro\ecma\*"
goto :eof


rem fetch the process info
:init_meta
rem fetch pid
if exist "%CKI_PIDLOG_PATH%" set /p CKI_SYSTEM_PIDV=<"%CKI_PIDLOG_PATH%"


rem check pid
set "CKI_SYSTEM_STAT=stopped"
tasklist /fi "pid eq %CKI_SYSTEM_PIDV%" |findstr /c:"%CKI_SYSTEM_PIDV%">nul && (set "CKI_SYSTEM_STAT=running") || (set "CKI_SYSTEM_STAT=stopped")
goto :eof


:init_opts
rem init java option for jmx
set "JAVA_OPTS=-Xmx512M -XX:MaxPermSize=512M -XX:+CRMSlassUnloadingEnabled"
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote"
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=%CKI_SYSTEM_PORT%"
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.authenticate=false"
set "JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.ssl=false"
set "JAVA_OPTS=%JAVA_OPTS% -Duser.home=%HOME%"
set "JAVA_OPTS=%JAVA_OPTS% -Duser.name=%USER%"
goto :eof


:ebis_case
rem label ebis_case
call :init_meta
set "CKI_SWITCH_CASE=false"
for %%i in (start stop status restart) do (
  if %%i'==%CKI_OPTION_NAME%' SET "CKI_SWITCH_CASE=true"
)
if "%CKI_SWITCH_CASE%" == "false" call :case_error
if "%CKI_SWITCH_CASE%" == "true"  call :case_%CKI_OPTION_NAME%
goto :eof


:case_start
rem label case_start
call :start
goto :eof


:case_stop
rem label case_stop
call :stop
goto :eof


:case_status
rem label case_status
call :status
goto :eof


:case_restart
rem label case_restart
call :restart
goto :eof


:restart
rem label restart
call :stop
call :start
goto :eof


:start
rem label start
if "%CKI_SYSTEM_STAT%" == "running" (
  echo %CKI_DAEMON_NAME% already %CKI_SYSTEM_STAT%
)

if "%CKI_SYSTEM_STAT%" == "stopped" (
  set /p "=%CKI_DAEMON_NAME% is starting, " <nul
  rem start "" javaw %JAVA_OPTS% -cp %JCLASS_PATH% %JCLASS_MAIN%
  start "" javaw -jar %CKI_HOME%/economia-ebis-fatjar.jar
  timeout 5 > NUL
  echo started
)
goto :eof


:status
rem label status
echo %CKI_DAEMON_NAME% is %CKI_SYSTEM_STAT%
goto :eof


rem label stop
:stop
if "%CKI_SYSTEM_STAT%" == "stopped" (
  echo %CKI_DAEMON_NAME% already %CKI_SYSTEM_STAT%
)

if "%CKI_SYSTEM_STAT%" == "running" (
  call :init_meta
  set /p "=%CKI_DAEMON_NAME% is stopping, " <nul
  taskkill /F /PID %CKI_SYSTEM_PIDV% 1>NUL
  
  for /L %%a in (0,1,10) do (
    if %%a lss 10 (
      if "!CKI_SYSTEM_STAT!" == "running" (
        timeout 3 > NUL
        call :init_meta
      )
      if "!CKI_SYSTEM_STAT!" == "stopped" (
        echo stopped
        goto :eof
      )
    )
    if %%a equ 10 (
      echo unable to stop
    )
  )
)
goto :eof


rem label case_error
:case_error
echo Usage^: start^|stop^|^status^|restart
goto :eof


:case_pause
rem label case_pause
@pause
goto :eof

Bash Script

#!/bin/bash
: '
@author    Chorke Economia<devs@chorke.org>
@vendor    Chorke Economia, Inc.
@web       chorke.org
@version   1.0.00
@since     1.0.00
'

# init bash meta data
init_ebis(){
  CKI_SYSTEM_NAME='ebis'
  CKI_DAEMON_NAME='ebisd'
  CKI_SYSTEM_PORT='11110'
  CKI_SOURCE_BASH="${BASH_SOURCE[0]}"
  CKI_ASSETS_PATH="$HOME/.chorke/economia"
  CKI_PROCES_FILE="$CKI_ASSETS_PATH/etc/pid/$CKI_SYSTEM_NAME.pid"
  
  while [ -h "$CKI_SOURCE_BASH" ]; do
    CKI_TARGET_BASH="$(readlink "$CKI_SOURCE_BASH")"
    if [[ $CKI_TARGET_BASH == /* ]]; then
      CKI_SOURCE_BASH="$CKI_TARGET_BASH"
    else
      CKI_TARGET_PATH="$( dirname "$CKI_SOURCE_BASH" )"
      CKI_SOURCE_BASH="$CKI_TARGET_PATH/$CKI_TARGET_BASH"
    fi
  done
  
  CKI_PARENT_PATH="$( dirname "$CKI_SOURCE_BASH" )"
  CKI_TARGET_PATH="$( cd -P "$( dirname "$CKI_SOURCE_BASH" )" && pwd )"
  
  
  if [ -z "$CKI_HOME" ];then
    #CKI_HOME=`cd $CKI_PARENT_PATH/..;pwd`
    CKI_HOME=`cd $CKI_PARENT_PATH;pwd`
    export CKI_HOME
  fi
  
  if [ -z "$HAPI_HOME" ];then
    HAPI_HOME=$CKI_ASSETS_PATH/var/$CKI_SYSTEM_NAME/hapi
    mkdir -p $HAPI_HOME
    export HAPI_HOME
  fi
  
  JCLASS_MAIN='org.chorke.boot.BootstrapApplication'
  JCLASS_PATH="$CKI_HOME/etc/ebis"
  JCLASS_PATH="$JCLASS_PATH:$CKI_HOME/usr/bin/ebis/*"
  JCLASS_PATH="$JCLASS_PATH:$CKI_HOME/lib/ebis/pro/ebis/*"
  JCLASS_PATH="$JCLASS_PATH:$CKI_HOME/lib/ebis/gpl/*"
  JCLASS_PATH="$JCLASS_PATH:$CKI_HOME/lib/ebis/pro/comn/*"
  JCLASS_PATH="$JCLASS_PATH:$CKI_HOME/lib/ebis/pro/ecma/*"
}


# fetch the process info
init_meta(){
  CKI_SYSTEM_STAT='stopped'
  if [ -f "$CKI_PROCES_FILE" ];then
    CKI_SYSTEM_PIDV=`cat $CKI_PROCES_FILE`
    if ps -p $CKI_SYSTEM_PIDV > /dev/null 2>&1;then
      CKI_SYSTEM_STAT='running'
    fi
  fi
}


# init java option for jmx
init_opts(){
  JAVA_OPTS='-Xmx512M -XX:MaxPermSize=512M -XX:+CRMSlassUnloadingEnabled'
  JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
  JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=$CKI_SYSTEM_PORT"
  JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
  JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
  JAVA_OPTS="$JAVA_OPTS -Duser.home=$HOME"
  JAVA_OPTS="$JAVA_OPTS -Duser.name=$USER"
}


# init system config
init_full(){
  if [ "$CKI_ACTION_INIT" != "true" ];then
    init_ebis
  fi
  init_meta
  init_opts
}


# inti full/entrie process
init_full