本机介绍一种利用Procrun,将 spring boot程序编译成jar包部署成 Windows服务 方法。
步骤说明
1 、springboot程序打包,程序默认就打成jar包。比如demo-0.0.1-SNAPSHOT.jar
2、下载Procrun
Procrun是 Apache 推出的一套能让 java 应用程序在Windows平台以服务的方式运行的插件。它主要包括两个程序:服务应用程序(名为prunsrv.exe),用于转换任一应用程序作为Win服务运行。监视器应用程序(名为prunmgr.exe),用于监视和配置procrun服务。
下载路径:
3、在服务器上构建目录,包括三个子目录 jar、logs 、services。
其中程序打包出的jar放在jar目录中,logs用来存放日志, services 目录存放安装服务需要的程序和脚本。service目录内容如下,其中两个exe程序就来自Procrun。需要我们手工编写两个脚本。

install.bat脚本
该脚本为安装服务脚本,内容如下:
@echo off
rem 设置程序名称
set SERVICE_EN_NAME=OauthProxyService
set SERVICE_CH_NAME=OauthProxyService
rem 设置java路径
set JAVA_HOME=%JAVA_HOME%
rem 设置程序依赖及程序入口类
cd..
set BASEDIR=%CD%
set CLASSPATH=%BASEDIR%jardemo-0.0.1-SNAPSHOT.jar
set MAIN_CLASS=org.springframework.boot.loader.JarLauncher
rem 设置prunsrv路径
set SRV=%BASEDIR%Serviceprunsrv.exe
rem 设置日志路径及日志文件前缀
set LOGPATH=%BASEDIR%Logs
rem 输出信息
echo SERVICE_NAME: %SERVICE_EN_NAME%
echo JAVA_HOME: %JAVA_HOME%
echo MAIN_CLASS: %MAIN_CLASS%
echo prunsrv path: %SRV%
rem 设置 JVM
if "% Jvm %" == "" goto findJvm
if exist "%JVM%" goto foundJvm
:findJvm
set "JVM=%JAVA_HOME%jrebinserverjvm.dll"
if exist "%JVM%" goto foundJvm
echo can not find jvm.dll automatically,
echo please use COMMAND to localation it
echo then install service
goto end
:foundJvm
echo installing...
rem 安装
"%SRV%" //IS//%SERVICE_EN_NAME% --DisplayName="%SERVICE_CH_NAME%" "--Classpath=%CLASSPATH%" "--Install=%SRV%" "--JavaHome=%JAVA_HOME%" "--Jvm=%JVM%" --JvmMs=256 --JvmMx=1024 --Startup=auto --JvmOptions=-Djcifs.smb.client.dfs.disabled=false ++JvmOptions=-Djcifs.resolveOrder=DNS --StartMode=jvm --StartClass=%MAIN_CLASS% --StartMethod=main --StopMode=jvm --StopClass=%MAIN_CLASS% --StopMethod=main --StopParams= --LogPath=%LOGPATH% --StdOutput=auto --StdError=auto
echo install service finish.
pause
uninstall.bat脚本
该脚本为卸 载 服务脚本,内容如下:
@echo off
cd..
set basedir=%CD%
set SERVICE_NAME=OauthProxyService
set SRV=%BASEDIR%Serviceprunsrv.exe
echo uninstall......
"%SRV%" //DS//%SERVICE_NAME%
echo uninstall finish.
pause
运行
双击install.bat就可以进行安装。安装完成后,在windows上的服务面板即可看到,就能进行启动和停止操作。
