springboot项目的可执行jar以后台本地服务的方式运行在Windows机器上


前段时间遇到一个项目,需要我们提供一个驱动控件,可以以后台服务的方式运行在Windows机器上。开始寻找各种解决办法。
最后发现一个不错的解决方式。分享给大家一下。

用到的工具

链接:https://pan.baidu.com/s/1QNnMgGF--lEQ8aFk5k8OUQ 
提取码:xjmg

先上一个效果图

在这里插入图片描述

准备可执行文件

我这里的是 scan-xxx-server.jar 只要这个文件 在Windows上 java -jar xxxx.jar命令下,可以启动就行。
但是这种java -jar的方式,客户端侧一旦关闭 cmd窗口 就服务停止了。接下来讲解怎么以后台服务的形式运行。
先上张图:
在这里插入图片描述
bin目录下:放的是
在这里插入图片描述
通过 允许 wrapper.exe程序 来加载配置文件wrapper.conf进而启动jvm和并将指定的服务注册到本地服务中。
conf目录下
在这里插入图片描述
这个配置文件的重点部分如下:

wrapper.java.command=java
wrapper.java.command=../jre/bin/java.exe
wrapper.java.command.loglevel=INFO
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../mylib/*.jar  #自己的可执行文件的jar及其依赖的包位置
wrapper.java.library.path.1=../lib       #需要的dll库放到这里,好像不太生效,项目中使用了JNI,用到的dll库放到了 jre\\bin目录下了
wrapper.logfile=../logs/wrapper.log  #服务中打印的日志存放位置
wrapper.logfile.loglevel=INFO  #文件日志中的日志级别
wrapper.name=ScanServer  # 服务名称
wrapper.displayname=ScanServer # 服务名称 和上一个都写一样就行,具体不太清楚区别
wrapper.description=某某服务控件 # 本地服务的描述信息
wrapper.ntservice.starttype=AUTO_START    #选择这个会注册服务为自动,下次开机 服务会自启。(但是首次注册还是要通过命令启动,下面bat脚本里有启动命令说明)

关于配置文件中的主类要格外注意,并不是指的自己可执行文件中的那个启动类。
要按下面来配:

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
# wrapper.app.parameter.1=cn.com.yuanquanyun.controller.platform.CustomerApplication
# springboot
wrapper.app.parameter.1=org.springframework.boot.loader.JarLauncher
# wrapper.app.parameter.1=cn.com.jit.bootstrap.ScanClientServerApplication

jre目录下
在这里插入图片描述
这个就是java项目运行环境jre。项目中用到的dll或者so库可以直接放到jre/bin目录下。
lang目录下
暂时为空,应该放语言包之类的东西,不影响服务运行。
lib目录下
在这里插入图片描述
这里放的是wrapper.exe允许时,需要的必要依赖。
log目录下
在这里插入图片描述
这个就是存放日志的地方。
mylib目录下
在这里插入图片描述
这个地方就是存放 要注册为本地服务的可执行文件
这个upkcs11.ini文件暂且不用管,放到里面就行。
在这里插入图片描述
启动脚本
主要用到的是 服务注册启动脚本.bat

SC QUERY "ScanServer" > NUL
IF not ERRORLEVEL 1 GOTO EXIST
  GOTO NOTEXIST
:NOTEXIST
ECHO not exist "ScanServer" service
echo 创建Windows服务
bin\wrapper.exe -i ..\conf\wrapper.conf
:echo 修改服务的描述 -- 用不到了 配置文件加了描述
:sc description ScanServer "石化扫码签控件"
echo 启动服务
net start ScanServer

GOTO END

:EXIST
ECHO 服务已存在
ECHO exist "ScanServer" service
GOTO END

:END
echo 键盘上随意按一个键退出&pause>nul

注意在bat脚本中 : 有两个含义。
一种是 GOTO 后面 需要跳到的地方。
另一种是 注释。也就是 不执行。
是哪一种含义 一般 :后是大写的一般都有对应的 GOTO 后的标识与其对应。
这里如果想要执行完自动关闭 cmd窗口 最后只需改为
:END
:退出
exit

注册及启动服务

在这里插入图片描述
Ctrl + R 后,在输入框中输入 services.msc 打开本地服务列表
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果发现描述或者服务名称错误了。
只能删除服务,然后重启再注册。
如果服务在启动状态下,先 执行 net stop 服务名。然后 执行 sc delete 服务名。
在这里插入图片描述
刷新服务列表就看不到这一条服务了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值