NSSM启动tomcat部署Java程序

关于NSSM启动Springboot打成的jar包服务,可看我原来的文章

WIndows服务器中使用nssm启动多个Springboot服务

tomcat启动的服务,会有一个命令对话框,对话框关闭了,程序也就推出了,为了不显示命令对话框,以服务的方式注册到window的服务表,可以使用NSSM.

NSSM 启动 Tomcat 时,不需要设置额外的 Arguments。

分析TOMCAT的startup.bat:

  1. 如果脚本硬编码了 Tomcat 路径:
bash 复制代码
   set "CATALINA_HOME=D:\SCM\SCM_TH"
   set "CATALINA_BASE=D:\SCM\SCM_TH"
  1. 脚本会调用
bash 复制代码
%CATALINA_HOME%\bin\catalina.bat start

NSSM 配置步骤:

  1. 基本配置:

Application 标签页:

bash 复制代码
  Path: D:\SCM\SCM_TH\bin\startup.bat
  Startup directory: D:\SCM\SCM_TH\bin
  Arguments: (留空)
  1. 或者直接使用 catalina.bat:

如果你想更直接的控制,也可以这样配置:

bash 复制代码
Application 标签页:
  Path: D:\SCM\SCM_TH\bin\catalina.bat
  Startup directory: D:\SCM\SCM_TH\bin
  Arguments: start
  1. 推荐使用 catalina.bat 的原因:

· 更简洁直接

· 避免 startup.bat 中的 pause 命令影响服务启动

· 更好的控制启动参数

  1. 完整 NSSM 配置示例:
bash 复制代码
nssm install SCM_TH "D:\SCM\SCM_TH\bin\catalina.bat"
nssm set SCM_TH AppDirectory "D:\SCM\SCM_TH\bin"
nssm set SCM_TH AppParameters "start"
nssm set SCM_TH AppStdout "D:\SCM\SCM_TH\logs\stdout.log"
nssm set SCM_TH AppStderr "D:\SCM\SCM_TH\logs\stderr.log"
  1. 如果需要在 Arguments 中添加其他参数:

如果你的 Tomcat 需要额外的 JVM 参数,可以这样配置:

bash 复制代码
Arguments: start -Dsome.property=value

或者通过环境变量方式在 NSSM 的 Environment 标签页中设置:

bash 复制代码
CATALINA_OPTS=-Xms512m -Xmx1024m -Dfile.encoding=UTF-8

建议:

最简单的方式就是:

bash 复制代码
· Path: D:\SCM\SCM_TH\bin\catalina.bat
· Startup directory: D:\SCM\SCM_TH\bin
· Arguments: run

这样配置后,NSSM 会正确启动你的 Tomcat 服务。

实际操作日志如下

我的电脑时64位的,nssm路径是D:\nssm-2.24\win64,打开cmd

\>cd D:\nssm-2.24\win64

D:\nssm-2.24\win64>nssm install

执行上述命令,会打开配置对话框,填写以下信息

Path: D:\SCM\SCM_TH\bin\catalina.bat

Startup directory: D:\SCM\SCM_TH\bin

Arguments: run

保存成功后命令行就会出现以下成功的日志

Service "SCMTH" installed successfully!

D:\nssm-2.24\win64>net start SCMTH

SCMTH 服务正在启动 .

SCMTH 服务已经启动成功。

D:\nssm-2.24\win64>net stop SCMTH

.

SCMTH 服务已成功停止。

D:\nssm-2.24\win64>net start SCMTH

SCMTH 服务正在启动 .

SCMTH 服务已经启动成功。

D:\nssm-2.24\win64>

D:\nssm-2.24\win64>nssm edit SCMTH

相关推荐
程序员黑豆2 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
GreenTea3 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
风流 少年3 小时前
Spring AI 2.0:Memory
java·后端·spring
码匠许师傅3 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
万少4 小时前
给 DeepSeek Harness 装个"应用商店":一条命令,595 个插件随你逛
前端·javascript·后端
小席是个热心肠4 小时前
AI相关的自我学习
java·人工智能·学习
波波0074 小时前
C# 15 重磅新特性: 带标签 break 与 continue:重新定义嵌套循环控制流
服务器·前端·c#
数智化管理手记6 小时前
海量数据如何沉淀有效数据资产?数据标准化治理方案如何搭建?
java·大数据·人工智能
隔窗听雨眠7 小时前
GBase 8s并发控制深度解析:封锁机制、隔离级别与死锁处理全攻略
服务器·数据库·oracle
cfm_29147 小时前
SpringAI + Ollama 本地大模型
java·开发语言·人工智能·语言模型