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

相关推荐
BBB努力学习程序设计2 小时前
Java 21虚拟线程与平台线程:JVM层面的深度对比与实现原理
java
代码无疆2 小时前
学点java字节码更易于理解一些特殊的java语法效果
java·后端
BBB努力学习程序设计2 小时前
Java 8日期时间API完全指南:告别Date和Calendar的混乱时代
java
不能只会打代码2 小时前
力扣--3433. 统计用户被提及情况
java·算法·leetcode·力扣
知青先生2 小时前
E9项目调试方式
java·ide
本地运行没问题2 小时前
从零散编译到一键打包:Maven如何重塑Java构建流程
java
10km3 小时前
java:延迟加载实现方案对比:双重检查锁定 vs 原子化条件更新
java·延迟加载·双重检查锁定
wanhengidc3 小时前
云手机的硬件依赖性如何?
运维·服务器·智能手机·云计算
星浩AI3 小时前
AI 并不懂文字,它只认向量:一文搞懂 Embedding
后端