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

news2024/11/26 17:31:59

文章目录

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

前段时间遇到一个项目,需要我们提供一个驱动控件,可以以后台服务的方式运行在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♪(・ω・)ノ

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32/ESP8266基于Arduino框架下驱动1.8“tft_oled屏幕仿数码管时钟

ESP32/ESP8266基于Arduino框架下驱动1.8"tft_oled屏幕仿数码管时钟 📍相关篇《ESP32基于Arduino框架下U8g2驱动I2C OLED 时间显示》📺效果演示: 🌿屏幕显示部分,采用使用TFT_eSPI库驱动,利用该库自带的…

2021年03月 Scratch(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 花花幼儿园有三个班。根据下面三句话,请你猜一猜,哪个班级人数最多? (1)中班比小班少 (2)中班比大班少 (3)大班比小班多 A:小班 B:中班 C:大班 D:三个班级一样多 答案:C 根据(1)(2)可以知道中班人数最少,根…

Power Automate-创建一个power Apps使用的流

创建即时云端流,选择Power Apps

口袋参谋:99.99%的商家,都不知道这个选品神器!!!

​至少有99.99%的商家是不知道如何选品的?很多人都是看人家卖什么,自己就卖什么?就比如卖连衣裙的,试问咱们卖之前都不做一下调查吗? 现在同质化的商品太多了,随便搜一个,就有成千上万的竞争者…

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

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

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

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

数字化时代,企业如何增加产品销售额

2023作为提振消费年,国民宏观经济环境正在复苏,而数字化技术的进步也使消费者的购买方式发生了翻天覆地的变化,对于企业而言,应该如何顺势而上增加产品销售额,成为其成功的关键。 今天媒介盒子就来和大家聊聊企业如何…

多商家签到打卡奖励免单霸王餐小程序开发

多商家签到打卡奖励免单霸王餐小程序开发 用户注册和登录:提供用户注册和登录功能,以便用户能够参与签到打卡活动。 商家入驻:商家可申请入驻平台,提交相关资料并等待平台审核,审核通过后即可发布活动和奖励。 签到打…

python读取txt格式的点云文件,可视化显示,保存ply格式

在计算机视觉和三维几何处理中,点云是一种重要的数据表示形式。点云由许多离散的点组成,每个点都有三维坐标,通常还包括其他信息。 空格形式的点云文件 import open3d as o3ddef read_txt_space(txt_file):# 读取点云数据pcd o3d.io.read_p…

智慧隧道:TSINGSEE青犀远程视频AI智能监管平台保障隧道施工安全

一、背景与需求分析 随着我国交通运输量的增加以及新基建的不断规划和建设,公路建设工作也在持续开展中。高速公路隧道属于特殊构造段,因为隧道空间小,密闭性强,施工过程中一旦发生火灾、事故等,将带来重大人员伤亡和…

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

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

Pytorch自动混合精度的计算:torch.cuda.amp.autocast

1 autocast介绍 1.1 什么是AMP? 默认情况下,大多数深度学习框架都采用32位浮点算法进行训练。2017年,NVIDIA研究了一种用于混合精度训练的方法,该方法在训练网络时将单精度(FP32)与半精度(FP16)结合在一起&#xff…

致刘家窑中医院龚洪海医生:患者的感谢与敬意

你们好!我曾经是咱们这的一名患者,我叫李刚,今年45岁,不知道你们还有印象吗?我曾去过一些医院进行就诊,但都没有得到恰当的治疗,症状一直没有消失。得了这个病之后对我的生活以及工作打击都十分的大。经朋友介绍说刘家…

Realistic fault detection of li-ion battery via dynamical deep learning

昇科能源、清华大学欧阳明高院士团队等的最新研究成果《动态深度学习实现锂离子电池异常检测》,用已经处理的整车充电段数据,分析车辆当前或近期是否存在故障。 思想步骤: 用正常电池的充电片段数据构造训练集,用如下的方式构造…

SwiftUI - 界面布局知识点

前言 SwiftUI采用的布局方式是和Flutter一样是弹性布局,而不是iOS之前的坐标轴的方式布局,不用准确的设置出位置大小,只需要设置当前视图大小及视图间排布的方式。灵活性增强,布局操作简便,SwiftUI与Flutter布局原理一…

基于SSM的供电所档案管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

交换机基础知识之安全配置

交换机在网络基础设施中扮演着重要角色,它促进了设备之间数据包的流动。正因此,采取适当的安全措施来保护网络免受未经授权的访问和潜在攻击至关重要。本文将全面解读交换机基础安全配置知识,并提供实践方案,以保证安全的网络环境…

Istio学习笔记-体验istio

参考Istio 入门(三):体验 Istio、微服务部署、可观测性 - 痴者工良 - 博客园 (cnblogs.com) 在本章中,我们将会学习到如何部署一套微服务、如何使用 Istio 暴露服务到集群外,并且如何使用可观测性组件监测流量和系统指标。 本章教程示例使用…

Vue CLI脚手架安装、搭建、配置 和 CLI项目分析

目录 一、CLI快速入门 1. 官方介绍 : 2.安装Vue CLI : 3.搭建Vue CLI : 4.IDEA配置Vue CLI : 二、Vue CLI项目分析 1.结构分析 : 1.1 config 1.2 node_modules 1.3 src 1.4 static 2.流程分析 : 2.1 main.js 2.2 router/index.js 2.3 components/HelloWorld.vue 2.4 A…

Vue3源码reactive和readonly对象嵌套转换,及实现shallowReadonly

前言 官方文档中对reactive的描述: 响应式转换是“深层”的:它会影响到所有嵌套的属性。一个响应式对象也将深层地解包任何 ref 属性,同时保持响应性。 官方文档中对readonly的描述: 只读代理是深层的:对任何嵌套属性的访问都将是…