【Java】使用WinSW将SpringBoot Jar包部署为Windows服务

一般来说很少用windows系统来部署java项目,但有时候给别人开发的项目,只有windows电脑进行部署,使用的时候一直有一个黑窗口还有提醒用户不要关闭,实在是太碍事了.所以就考虑到能不能将java项目部署成windows服务,在后台运行,开机自启动.

1.初识WinSW:为何它是SpringBoot Windows部署的优选?

在Windows服务器上部署SpringBoot应用时,直接使用 java -jar 命令运行会面临一个典型问题:启动它的命令行窗口必须始终保持打开,一旦关闭或用户注销,进程就会随之终止。这显然不适合需要长期稳定运行的生产环境。

WinSW(Windows Service Wrapper)正是为解决此类问题而生。它是一个开源工具 ,能将任何可执行程序(包括Java应用)封装为标准的Windows服务

这意味着你的SpringBoot应用可以:

  • 在后台静默运行:无需保持用户登录状态
  • 实现开机自动启动:确保服务器重启后应用能自行恢复。
  • 享受统一的生命周期管理:可以通过Windows服务管理器或简单的命令行进行启动、停止、重启等操作
    Spring官方文档也曾推荐使用WinSW在Windows上部署SpringBoot应用

2 部署

2.1 下载

下载地址: https://github.com/winsw/winsw/releases

WinSW 的 GitHub Releases 页面下载必要的文件。你需要根据系统环境选择对应的可执行文件以及一个XML配置模板(通常是 sample-minimal.xml)

准备工作:

  1. 创建一个专属目录,存放部署文件,例如D:\MySpringBootService
  2. 将你的SpringBoot Jar包(如 ruoyi-admin.jar)放入该目录
  3. 将下载的WinSW可执行文件(如 WinSW-x64.exe)和XML样本文件也放入此目录。

2.2 关键的重命名

WinSW要求可执行文件(.exe)与其对应的XML配置文件必须同名。这至关重要

  • WinSW.NET4.exe 重命名为与你的服务相关的名称,例如 RuoyiAdminService.exe
  • sample-minimal.xml 重命名为完全相同的前缀,即 RuoyiAdminService.xml

2.3 编写核心的XML配置文件

xml 复制代码
<service>
    <!-- 在Windows系统内部使用的唯一服务ID -->
    <id>RuoyiAdminService</id>
    <!-- 在服务管理器中显示的名称 -->
    <name>Ruoyi Admin Service</name>
    <!-- 服务的描述 -->
    <description>若依后台管理系统服务(由WinSW驱动)</description>

    <!-- 指定Java可执行文件,如果已配置环境变量,直接写"java"即可 -->
    <executable>java</executable>
    <!-- 传递给Java的命令行参数 -->
    <arguments>-Dfile.encoding=UTF-8 -Xms512m -Xmx1024m -jar "ruoyi-admin.jar"</arguments>

    <!-- 指定工作目录,%BASE%代表exe文件所在目录 -->
    <workingdirectory>%BASE%</workingdirectory>
    <!-- 服务启动模式:Automatic(自动), Manual(手动) -->
    <startmode>Automatic</startmode>

    <!-- 日志配置:日志存放目录 -->
    <logpath>%BASE%\logs</logpath>
    <!-- 日志模式:rotate为滚动日志,防止单个文件过大 -->
    <logmode>rotate</logmode>
</service>

2.4 安装与启动服务

  1. 安装服务
shell 复制代码
# 成功后会提示服务器已安装
C:\MySpringBootService\RuoyiAdminService.exe install
  1. 启动服务
bash 复制代码
C:\MySpringBootService\RuoyiAdminService.exe start

或者使用系统命令

bash 复制代码
net start RuoyiAdminService

或者搜索服务在窗口中找到注册的服务RuoyiAdminService

2.5 验证

  1. 打开 Windows 服务管理器(运行 services.msc),在列表中找到 "Ruoyi Admin Service"。
  2. 确认其状态是否为"正在运行"。
  3. 右键可以停止、重启或修改属性(如将启动类型改为"自动")。

3. 服务管理命令大全

命令 功能
YourService.exe install 安装服务
YourService.exe start 启动服务
YourService.exe stop 停止服务
YourService.exe restart 重启服务
YourService.exe status 查看服务状态
YourService.exe uninstall 卸载服务

4. 高级配置与调优

  • 使用外部配置文件 :若要将配置文件(如 application.yml)放置在jar包外部,可以在 <arguments> 中添加 -Dspring.config.location= 参数指定路径。
  • 延迟启动 :如果需要服务在系统启动完毕后再启动,可以添加 <delayedAutoStart/> 标签。
  • 失败自动重启 :添加 <onfailure action="restart"/> 标签,使服务意外停止后能自动重启。

5. 故障排除指南

当服务启动失败时(例如你在对话历史中提到的状态显示为启动成功但进程立即退出),请按以下顺序排查:

  1. 首要检查点 - 日志文件 :立即查看配置文件中 <logpath> 指定的目录(如 logs 文件夹)。WinSW生成的 *.err.log *.out.log 文件,以及SpringBoot应用自身的日志,包含了最直接的错误信息。
  2. 手动执行测试 :在jar包目录打开CMD,直接运行 java -jar ruoyi-admin.jar。观察控制台输出的错误堆栈,这能精准定位是Java应用自身启动问题(如数据库连不上、端口占用),还是环境问题。
  3. 核对XML配置 :
    • 检查XML格式是否正确,标签是否闭合。
    • 确认 <executable> 指向的Java路径绝对正确。
    • 确保 <id><name> 与系统现有服务不重复。
  4. 验证环境:确认系统已安装对应版本的 .NET Framework(运行WinSW所需)和JDK。

6. 总结

通过以上步骤,你已掌握了使用WinSW将SpringBoot Jar包部署为Windows服务的完整流程。从下载重命名、编写配置文件、安装服务到管理排错,整个过程清晰可控。

关键在于:准确的XML配置、通过日志分析问题,以及将不稳定的后台进程转化为可由操作系统托管的标准服务。这让你的SpringBoot应用在Windows服务器上获得了真正的"生产级"运行能力。

掌握这个部署方式后,你可以将更多应用无缝集成到Windows服务器环境中,实现统一、稳定的管理。

相关推荐
e***8905 小时前
MySQL 8.0版本JDBC驱动Jar包
数据库·mysql·jar
青云计划6 小时前
知光项目知文发布模块
java·后端·spring·mybatis
赶路人儿6 小时前
Jsoniter(java版本)使用介绍
java·开发语言
探路者继续奋斗7 小时前
IDD意图驱动开发之意图规格说明书
java·规格说明书·开发规范·意图驱动开发·idd
消失的旧时光-19437 小时前
第十九课:为什么要引入消息队列?——异步系统设计思想
java·开发语言
A懿轩A7 小时前
【Java 基础编程】Java 面向对象入门:类与对象、构造器、this 关键字,小白也能写 OOP
java·开发语言
乐观勇敢坚强的老彭8 小时前
c++寒假营day03
java·开发语言·c++
biubiubiu07068 小时前
谷歌浏览器无法访问localhost:8080
java
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue鲜花商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
大黄说说8 小时前
新手选语言不再纠结:Java、Python、Go、JavaScript 四大热门语言全景对比与学习路线建议
java·python·golang