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

文章目录

  • 先上一个效果图
  • 准备可执行文件
  • 注册及启动服务
  • 用到的工具

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

先上一个效果图

在这里插入图片描述

准备可执行文件

我这里的是 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 服务名。
在这里插入图片描述
刷新服务列表就看不到这一条服务了。

用到的工具

需要的自取

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

如果对您有帮助,麻烦点赞和收藏下哈。Thanks♪(・ω・)ノ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/144625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue2项目从0搭建(一):项目搭建

前言: vue2项目可谓十分常见,国内大部分的前端码农应该都是用vue2技术在开发,虽然vue3和react等技术也有很多,但是占据绝大多数的中高级搬砖码农应该干的都是vue2技术的项目,就算现在很多人转战vue3技术了,但是维护原有vue2的项目应该也是很多的。 我本来是不打算写vue2的技术…

用Go实现yaml文件节点动态解析

1.摘要 在大多数Go语言项目中, 配置文件通常为yaml文件格式, 在文件中可以设置项目中可灵活配置的各类参数, 通常这类参数都是比较固定的, 可以将其映射为对应的结构体在项目中进行使用, 如果需要调整参数时, 只需要增减结构体参数字段内容即可。 但同时还存在另外一种情况, …

文献阅读——Layered Costmaps for Context-Sensitive Navigation

摘要 许多导航系统,包括无处不在的ROS导航堆栈,在单个成本图上执行路径规划,其中大部分信息存储在单个网格中。这种方法在生成最小长度的无碰撞路径方面非常成功,但是当成本图中的值超出已占用或空闲空间时,它在动态的…

ATFX汇市:美国10月CPI数据来袭,通胀率料将进一步走低

ATFX汇市:本周二21:30,美国劳工部将公布10月未季调CPI年率,前值为3.7%,预期值3.3%;9月未季调核心CPI年率将于同一时间公布,前值为4.1%,预期值4.1%。机构预期美国名义通胀率将显著下降&#xff0…

EasyA正在帮助Sui为新一代Web3 App培养构建者

最近,我们采访了Phil和Dom Kwok,他们是兄弟也是Web3教育移动应用EasyA的共同创始人。这个教育app通过学习模块和编码挑战的形式,向开发人员教授有关不同区块链及其独特特性的知识。他们在十月初推出了他们的第一个Sui模块,并在随后…

Pikachu(皮卡丘靶场)初识XSS(常见标签事件及payload总结)

目录 1、反射型xss(get) 2、反射性xss(post) 3、存储型xss 4、DOM型xss 5、DOM型xss-x XSS又叫跨站脚本攻击,是HTML代码注入,通过对网页注入浏览器可执行代码,从而实现攻击。 ​ 1、反射型xss(get) Which NBA player do you like? 由…

hive更改表结构的时候报错

现象 FAILED: ParseException line 1:48 cannot recognize input near ADD COLUMN compete_company_id in alter table statement 23/11/14 17:59:27 ERROR org.apache.hadoop.hive.ql.Driver: FAILED: ParseException line 1:48 cannot recognize input near ADD COLUMN compe…

数据结构与算法【链表:一】Java实现

目录 链表 单向链表 哨兵链表 双向链表 环形链表 链表 链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 随机访问性能 根据 index 查找,时间复杂度 O(n) 插入或删除性能 起始位置:O(1)结束位…

一文说清楚Openai的这波更新内容,大地震 一大波套壳公司倒闭

前几天Openai召开了首届的开发者大会,45分钟的会议,让千万用户感到兴奋,但是让万千的套壳的创业公司,却感觉如坐针毡。这次发布会发布了哪些功能?为什么会导致这种情况的发生?让我们接着往下讲 API升级且降…

【业务场景】长列表的处理

长列表的处理 1. 什么是长列表 在前端开发中,经常会遇到列表展示,如果列表项的数量比较多,我们一般选择采用分页的方式来进行处理 但传统的前后翻页方式只适用于后台的管理系统中,而在用户端、尤其是在移动端,为了保…

OSCNet: Orientation-Shared Convolutional Network for CT Metal Artifact Learning

OSCNet: 面向共享的CT金属伪影学习卷积网络 论文链接:https://ieeexplore.ieee.org/document/10237226 项目链接:https://github.com/hongwang01/OSCNet(目前不会开源) Abstract X射线计算机断层扫描(CT)已广泛应用于疾病诊断和…

计算机毕业设计选题推荐-记录生活微信小程序/安卓APP-项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

GB28181/GB35114国标平台LiveGBS适配国产信创环境,使用国产数据库达梦数据库、高斯数据库、瀚高数据库的配置方法...

1、如何配置切换信创达梦数据库? livecms.ini -> [db]下面添加配置如: ... [db] dialectdm url dm://SYSDBA:Aa12345678localhost:5236/livegbs 2、如何配置切换高斯数据库? livecms.ini -> [db]下面添加配置如: ... [db] d…

洗地机是智商税吗?洗地机有没有必要买?2023洗地机推荐

传统的扫地拖地方式不仅时间长,被毛孩子和萌娃制造的顽固污渍更是让人头痛不已,高效又有效的地面清洁方式成了我们最大的诉求。目前洗地机受到青睐,异常火爆,也成为一众清洁扫地的选择之一,那洗地机到底是不是智商税呢…

物联网AI MicroPython学习之语法 umqtt客户端

学物联网,来万物简单IoT物联网!! umqtt 介绍 模块功能: MQTT客户端功能 - 连线、断线、发布消息、订阅主题、KeepAlive等功能。 MQTT协议采用订阅者/发布者模式,协议中定义了消息服务质量(Quality of Service&#x…

Winform / WPF 自定义控件 —— IPV4 地址输入框

在开始阅读本文之前,如果您有学习创建自定义控件库并在其他项目中引用的需求,请参考:在Visual Studio中创建自定义Winform控件库并在其他解决方案中引用https://blog.csdn.net/YMGogre/article/details/126508042 0、引言 Winform / WPF 框架…

docker命令大全

1、查看Docker 容器占用的空间 docker ps -s2、查看所有容器 docker ps -a3、启动、关闭、重启一个已存在的容器 docker start <容器ID> docker stop <容器ID> docker restart <容器ID> 4、进入容器&#xff0c;退出终端的时候不会关闭container的ma…

线程池的使用

线程池的作用 降低线程创建和销毁的开销&#xff1a;线程的创建和销毁是比较昂贵的操作。通过使用线程池&#xff0c;可以避免频繁地创建和销毁线程&#xff0c;而是复用线程池中已经存在的线程&#xff0c;从而降低了开销。 控制并发度&#xff1a;通过控制线程池中线程的数量…

(个人实测保熟)记录Tecnomatix Process Simulate 16.1.2官方安装包及授权许可配置教程(Win10环境)

Tecnomatix Process Simulate 16是一款由西门子公司推出的一款工艺仿真解决方案,是虚拟制造仿真领域的领先解决方案,可帮助您数字化制造以及将创新思想和原材料转变为变革性产品的过程。在网上找了一些盗版的安装包&#xff0c;就很离谱。直接提示本"无法打开此安装程序包…