使用winsw将springboot打包的jar注册系统本地服务
1、下载winsw
下载地址:https://github.com/kohsuke/winsw/releases
我这里下载的是2.3.0版。
下载sample-minimal.xml和WinSW.NET4.exe两个文件。
2、将三个文件放在同一个文件夹中
WinSW.NET4.exe
sample-minimal.xml
springboot jar包
3、修改文件名字
需要将winsw执行程序跟xml改成同样的名字,推荐使用项目名+Service的命名方式,比如:
WinSW.NET4.exe修改为rexel-middleware-0.0.1.exe
sample-minmal.xml修改为rexel-middleware-0.0.1.xml
4、编辑xml文件
配置内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < configuration > <!--安装成Windows服务后的服务名--> < id >rexel-middleware</ id > <!--显示的服务名称--> < name >rexel-middleware</ name > <!--对服务的描述--> < description >rexel-middleware for hzzg project</ description > <!--这里写java的路径,如何配置了环境变量直接写"java"就行--> < executable >java</ executable > <!---jar后面的是项目名,可以配置内存限制如-Xmx256m代表堆内存最大值为256MB --> < arguments >-jar rexel-middleware-0.0.1.jar</ arguments > <!--日志模式--> < logmode >rotate</ logmode > </ configuration > |
5、执行命令安装服务
打开系统命令行窗口,进入到rexel-middleware-0.0.1.exe所在文件夹,
然后执行命令安装服务命令:rexel-middleware-0.0.1.exe install。
执行发现报错如下:
错误日志:
1 2 3 4 5 6 7 8 9 10 11 12 13 | D:\MyWork\22_Github\rexel-cn\rexel-jarvis\rexel-middleware\install>rexel-middleware-0.0.1.exe install 2019-12-02 10:25:24,938 INFO - Installing the service with id 'myapp' 2019-12-02 10:25:24,964 FATAL - WMI Operation failure: AccessDenied WMI.WmiException: AccessDenied 在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result) 在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args) 在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor) 在 winsw.WrapperService.Main(String[] args) WMI.WmiException: AccessDenied 在 WMI.WmiRoot.BaseHandler.CheckError(ManagementBaseObject result) 在 WMI.WmiRoot.ClassHandler.Invoke(Object proxy, MethodInfo method, Object[] args) 在 winsw.WrapperService.Run(String[] _args, ServiceDescriptor descriptor) 在 winsw.WrapperService.Main(String[] args) |
解决方法:
使用管理员权限重新打开cmd窗口,重新执行rexel-middleware-0.0.1.exe install
6、启动服务
命令提示符界面输入命令启动服务。
命令:net start rexel-middleware
7、查看是否启动成功
打开系统服务功能:运行——输入services.msc
即可看见自己命名的服务rexel-middleware。
我的java程序是一个从外部接口定时拉取数据,并写入到mysql的程序,
可以看到已经在开始写入数据了,证明程序运行成功。
8、重启测试
重启电脑后该服务会自动启动,执行第6步(net start rexel-middleware)可检查是否成功。
9、删除服务
分为两步:
步骤1:停止服务
命令提示符界面输入命令停止运行服务:net stop rexel-middleware
步骤2:删除服务
命令提示符界面输入命令可删除服务:rexel-middleware-0.0.1.exe uninstall
10、修改为批处理文件
上面所有的命令都可以写在批处理文件中,部署的时候就可以实现一键部署了。
例如start.bat内容如下:
1 2 | rexel-middleware-0.0.1.exe install net start rexel-middleware |
例如stop.bat内容如下:
1 2 | net stop rexel-middleware rexel-middleware-0.0.1.exe uninstall |
--END--
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2016-12-02 初识微服务