本文档可实现目的:
- grails 项目打包好的war包作为Windows 服务在系统 下运行
- 部署完成后支持默认设置开机自启
- 支持32位和64位JDK
- 实现一键安装服务
- 支持一键卸载服务
- 支持一键重启服务
- 支持一键停止服务
- 支持yml外置配置文件修改环境变量
系统环境:
正文:
一:创建服务安装脚本
方案一:(此脚本使用独立JDK,不需要为系统配置JDK环境变量)
1. 新建txt文件,文件名称 “服务安装”
2. 将.txt后缀修改为.bat
3. 粘贴如下脚本内容
@echo off
rem 本脚本负责安装grails-service-0.1.war为系统服务,脚本依赖Procrun
rem 运行脚本前请务必将procrun.exe文件放入和脚本同一个目录下
rem 设置jdk 所在目录,推荐将JDK免安装包与此安装脚本放置到同一目录下
SET JAVA_HOME=".\JDK8-32\jre"
: install_service
if "%JAVA_HOME%" == "" (
echo 找不到JRE,未拷贝JDK-32文件包到当前文件所在目录,请拷贝。。。。。
goto failed
) else (
"%JAVA_HOME%\bin\java" -version 2>&1 | find /i "build 1.8.0" > nul 2>&1
if %ERRORLEVEL% NEQ 0 (
echo 必须使用java8环境,请检查所使用JDK版本。
goto failed
)
)
if exist "%JAVA_HOME%\jre" (
set "JRE_HOME=%JAVA_HOME%\jre"
) else (
set "JRE_HOME=%JAVA_HOME%"
)
rem Try to use the server jvm
set "JVM=%JRE_HOME%\bin\server\jvm.dll"
if exist "%JVM%" goto foundJvm
rem Try to use the client jvm
set "JVM=%JRE_HOME%\bin\client\jvm.dll"
if exist "%JVM%" goto foundJvm
echo Warning: Neither 'server' nor 'client' jvm.dll was found at JRE_HOME.
set JVM=auto
:foundJvm
cd /d %~dp0
set "SERVICE_PATH=%cd%"
echo 使用JAVA_HOME变量值: %JAVA_HOME%
prunsrv.exe install grails-service ^
--Description "grails-server 测试服务,服务自动重启哦" ^
--Startup auto ^
--StartMode jvm ^
--StopMode jvm ^
--Jvm "%JVM%" ^
--Classpath "%SERVICE_PATH%\grails-service-0.1.war" ^
--StartClass "org.springframework.boot.loader.WarLauncher" ^
--StopClass "java.lang.System"^
--LogPath "./"^
--StopMethod "exit"^
if %ERRORLEVEL% NEQ 0 goto failed
sc failure "grails-service" actions= restart/5000/restart/5000/restart/5000 reset= 86400
if %ERRORLEVEL% NEQ 0 (
echo 设置服务自动重启失败,请确保使用管理员身份运行脚本
goto :failed
)
:start_service
echo 尝试启动service...
pruns