windows server java服务部署?

在 Windows Server 上部署 Java 服务(即 Java 应用程序作为后台服务运行),通常涉及以下几个步骤。下面是一个完整的指南,适用于将 Spring Boot、Java Web 应用或其他基于 Java 的应用程序部署为 Windows 服务。


✅ 前提条件

  1. Windows Server(如 Windows Server 2016/2019/2022)
  2. Java JDK 或 JRE 已安装并配置好环境变量
  3. 你的 Java 应用打包成可执行的 JAR 文件(如 app.jar

🔧 部署方式一:使用 NSSM(推荐,简单易用)

NSSM (Non-Sucking Service Manager) 是一个开源工具,可以将任意可执行文件包装为 Windows 服务。

步骤 1:下载 NSSM

  • 官网:https://nssm.cc/download
  • 下载 nssm-2.24.zip 或最新版本
  • 解压后选择对应系统架构(x64)中的 win64/nssm.exe

步骤 2:安装 Java 服务

  1. nssm.exe 放到某个目录,比如 C:nssm
  2. 管理员身份运行命令提示符或 PowerShell
C:nssmnssm.exe install MyJavaApp

这会弹出配置窗口。

步骤 3:配置服务参数

在弹出的界面中填写:

  • Application tab

    • Path: C:Program FilesJavajdk-17binjava.exe(根据你的 Java 路径)
    • Arguments: -jar "C:myappapp.jar"
    • Startup directory: C:myapp(JAR 所在目录)
  • Details tab(可选)

    • Description: 如 “My Spring Boot Application”
    • Start type: Automatic / Manual
  • Log On tab(可选)

    • 默认使用 Local System,若需访问网络路径可改为特定账户

点击 Install service

步骤 4:启动服务

net start MyJavaApp

或通过「服务管理器」(services.msc)找到 MyJavaApp 并启动。

步骤 5:查看日志(调试用)

可以在 NSSM 配置的 I/O 选项卡中设置输出日志路径:

  • Output (stdout): C:myapplogsstdout.log
  • Error (stderr): C:myapplogsstderr.log

🔧 部署方式二:使用 Apache Commons Daemon(Procrun)

适用于更高级控制,常用于 Tomcat 等服务。

步骤 1:下载 Commons Daemon

  • https://commons.apache.org/proper/commons-daemon/

下载 procrun(包含 prunsrv.exe

步骤 2:准备脚本

假设你把 prunsrv.exe 放在 C:myappservice

创建批处理文件 install.bat

@echo off
set SERVICE_NAME=MyJavaApp
set PR_PATH=C:myappservice
set JAVA_HOME=C:Program FilesJavajdk-17
set APP_JAR=C:myappapp.jar

"%PR_PATH%prunsrv.exe" //IS//%SERVICE_NAME% ^
    --DisplayName="My Java Application" ^
    --Description="Spring Boot App as Windows Service" ^
    --Startup=auto ^
    --LogLevel=INFO ^
    --Classpath="%APP_JAR%" ^
    --StartMode=jvm ^
    --StartClass=com.example.Application ^
    --StartMethod=main ^
    --StopMode=jvm ^
    --StopClass=com.example.Application ^
    --StopMethod=stop ^
    --JvmOptions="-Xms512m;-Xmx1024m" ^
    --Jvm="%JAVA_HOME%binserverjvm.dll"

echo Service installed.
pause

注意:

  • StartClass 是主类全名(含包名)
  • 若没有 stop 方法,可省略 StopMethod,或使用信号中断

步骤 3:运行 install.bat(管理员权限)

然后可用:

net start MyJavaApp

卸载服务:

prunsrv //DS//MyJavaApp

🛠️ 其他建议

1. 设置 JAVA_HOME 环境变量

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:Program FilesJavajdk-17", "Machine")
[Environment]::SetEnvironmentVariable("PATH", "%JAVA_HOME%bin;%PATH%", "Machine")

2. 开放防火墙端口(如 8080)

New-NetFirewallRule -DisplayName "Java App Port 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow

3. 自动重启配置(NSSM)

在 NSSM 中设置:

  • Recovery → First failure: Restart the service
  • 第二次失败:也重启
  • 后续失败:重启或运行脚本

✅ 验证部署

  1. 打开浏览器访问 http://your-server-ip:8080
  2. 查看服务状态:
sc query MyJavaApp

或打开「服务」应用管理。


📌 总结

方式 优点 推荐场景
NSSM 简单、图形化、稳定 大多数 Java 应用(Spring Boot)
Procrun 更精细控制 JVM 和生命周期 需要集成到企业标准流程

如果你提供具体的应用类型(如 Spring Boot、普通 Java SE、Tomcat WAR 包等),我可以给出更精确的部署脚本和配置。

需要我帮你生成一个自动部署的 .bat 脚本吗?

未经允许不得转载:秒懂云 » windows server java服务部署?