windows运行多个Tomcat Service

windows注册多个Tomcat Service

2. 原理说明

在windows中,可以使用 prunsrv.exe来注册、管理 windows service.

Tomcat 中:

文件 实际程序
Tomcat9.exe prunsrv.exe 用来注册、管理service 的程序
Tomcat9w.exe prunmgr.exe prunsrv.exe 对应的图形化界面管理程序。

实际上:

text 复制代码
Tomcat9.exe

本质就是:

text 复制代码
prunsrv.exe

它支持:

text 复制代码
根据 EXE 文件名自动识别 Service Name

例如:

text 复制代码
webapp.exe

默认:

text 复制代码
Service Name = webapp

这是 Procrun 的特性。

官方文档:

https://commons.apache.org/proper/commons-daemon/procrun.html


3. 环境示例

项目 路径
Tomcat D:\Tomcat9
Java D:\Java\jdk1.8
Service Name webapp

Tomcat目录:

text 复制代码
D:\Tomcat9
├── bin
├── conf
├── logs
├── webapps

4. 修改 EXE 文件名

进入:

text 复制代码
D:\Tomcat9\bin

原文件:

text 复制代码
Tomcat9.exe

复制并改名:

text 复制代码
webapp.exe

最终:

text 复制代码
D:\Tomcat9\bin\webapp.exe

5. 删除旧服务(可选)

如果之前安装过:

text 复制代码
Tomcat9

先删除:

cmd 复制代码
sc stop Tomcat9

sc delete Tomcat9

或者:

cmd 复制代码
Tomcat9.exe //DS//Tomcat9

6. 注册 webapp Service

进入:

cmd 复制代码
cd D:\Tomcat9\bin

执行:

cmd 复制代码
webapp.exe //IS//webapp ^
--Jvm="D:\Java\jdk1.8\jre\bin\server\jvm.dll" ^
--Classpath="D:\Tomcat9\bin\bootstrap.jar;D:\Tomcat9\bin\tomcat-juli.jar" ^
--StartMode=Java ^
--StartClass=org.apache.catalina.startup.Bootstrap ^
--StartParams=start ^
--StopMode=Java ^
--StopClass=org.apache.catalina.startup.Bootstrap ^
--StopParams=stop

上面是:

text 复制代码
最小可运行配置

其中真正必须的核心参数只有:

参数 是否必须 作用
//IS// 必须 安装服务
--Jvm 必须 指定 JVM
--Classpath 必须 Tomcat 启动 jar
--StartMode 必须 Java 模式
--StartClass 必须 启动类
--StartParams 基本必须 start
--StopMode 建议 停止模式
--StopClass 建议 停止类
--StopParams 建议 stop

而下面这些:

cmd 复制代码
--DisplayName
--Description
--Startup
--StdOutput
--StdError
--LogPath
--LogLevel

都属于:

text 复制代码
增强配置

不是必须。

例如:

cmd 复制代码
--DisplayName="webapp"

只是 Windows 服务显示名称。


cmd 复制代码
--Description="Tomcat Web Application Service"

只是服务描述。


cmd 复制代码
--Startup=auto

只是:

text 复制代码
开机自动启动

不写的话默认通常是:

text 复制代码
manual

cmd 复制代码
--StdOutput=auto
--StdError=auto

只是:

text 复制代码
输出日志重定向

不写也能运行。


cmd 复制代码
--LogPath
--LogLevel

只是:

text 复制代码
prunsrv 自身日志

不是 Tomcat 日志。


企业里实际上常见两种写法:

1. 极简写法(开发环境)

cmd 复制代码
webapp.exe //IS//webapp ^
--Jvm="D:\Java\jdk1.8\jre\bin\server\jvm.dll" ^
--Classpath="D:\Tomcat9\bin\bootstrap.jar;D:\Tomcat9\bin\tomcat-juli.jar" ^
--StartMode=Java ^
--StartClass=org.apache.catalina.startup.Bootstrap ^
--StartParams=start ^
--StopMode=Java ^
--StopClass=org.apache.catalina.startup.Bootstrap ^
--StopParams=stop

2. 生产环境完整写法(推荐)

cmd 复制代码
webapp.exe //IS//webapp ^
--DisplayName="webapp" ^
--Description="Tomcat Web Application Service" ^
--Install="D:\Tomcat9\bin\webapp.exe" ^
--Startup=auto ^
--Jvm="D:\Java\jdk1.8\jre\bin\server\jvm.dll" ^
--Classpath="D:\Tomcat9\bin\bootstrap.jar;D:\Tomcat9\bin\tomcat-juli.jar" ^
--StartMode=Java ^
--StartClass=org.apache.catalina.startup.Bootstrap ^
--StartParams=start ^
--StopMode=Java ^
--StopClass=org.apache.catalina.startup.Bootstrap ^
--StopParams=stop ^
--StdOutput=auto ^
--StdError=auto ^
--LogPath="D:\Tomcat9\logs" ^
--LogLevel=Info

因为生产环境更关注:

  • 自动启动
  • 日志
  • 运维可读性
  • 服务描述
  • 故障排查
  • 输出重定向

所以参数会更多。


7. 参数说明

//IS//

安装 Windows Service。


--Install

指定:

text 复制代码
当前 service 使用哪个 exe

这里:

cmd 复制代码
--Install="D:\Tomcat9\bin\webapp.exe"

表示:

text 复制代码
service 使用 webapp.exe 启动

--Jvm

指定:

text 复制代码
jvm.dll

例如:

text 复制代码
D:\Java\jdk1.8\jre\bin\server\jvm.dll

注意:

不要写:

text 复制代码
java.exe

必须是:

text 复制代码
jvm.dll

--Classpath

Tomcat 启动必须:

text 复制代码
bootstrap.jar
tomcat-juli.jar

--StartClass

Tomcat 启动类:

text 复制代码
org.apache.catalina.startup.Bootstrap

--StartParams

text 复制代码
start

等价于:

text 复制代码
startup.bat

--StopParams

text 复制代码
stop

等价于:

text 复制代码
shutdown.bat

8. 启动 Service

安装后:

cmd 复制代码
net start webapp

或者:

cmd 复制代码
sc start webapp

9. 停止 Service

cmd 复制代码
net stop webapp

或者:

cmd 复制代码
sc stop webapp

10. 查看 Windows Service

打开:

cmd 复制代码
services.msc

会看到:

text 复制代码
webapp

11. 查看 Service 配置

执行:

cmd 复制代码
sc qc webapp

查看:

text 复制代码
BINARY_PATH_NAME

例如:

text 复制代码
D:\Tomcat9\bin\webapp.exe

12. 查看当前 Procrun 配置

执行:

cmd 复制代码
webapp.exe //PS//

会输出:

text 复制代码
--Jvm
--Classpath
--StartClass

等当前配置。


13. 使用 GUI 修改配置(可选)

如果需要 GUI:

复制:

text 复制代码
Tomcat9w.exe

改名:

text 复制代码
webappw.exe

然后:

cmd 复制代码
webappw.exe //ES//webapp

即可打开:

  • JVM配置
  • Java内存
  • 日志配置
  • 启动参数

GUI界面。


14. 多 Tomcat 服务示例

企业常见:

Service Port
webapp 8080
oa 8090
erp 8100

每个:

  • 独立 Service
  • 独立 JVM
  • 独立 logs
  • 独立 conf

15. 推荐目录结构

text 复制代码
D:\
├── Java\
├── nginx\
├── Tomcat_webapp\
├── Tomcat_oa\
├── Tomcat_erp\

17. 常见问题

17.1 服务启动失败

检查:

text 复制代码
logs

目录。


17.2 端口占用

检查:

cmd 复制代码
netstat -ano | findstr 8080

17.3 JVM路径错误

必须:

text 复制代码
jvm.dll

不是:

text 复制代码
java.exe

17.4 服务无法停止

可能:

  • shutdown port冲突
  • JVM卡死
  • Java线程未退出

查看:

text 复制代码
catalina.out

或者:

text 复制代码
stderr

日志。


18. 删除 Service

cmd 复制代码
webapp.exe //DS//webapp

或者:

cmd 复制代码
sc delete webapp

推荐:

cmd 复制代码
//DS//

因为会清理:

text 复制代码
Procrun 注册信息

19. 总结

文件 作用
webapp.exe prunsrv.exe改名
webappw.exe prunmgr.exe改名

核心原理:

text 复制代码
Procrun 根据 EXE 名识别 Service Name

例如:

text 复制代码
webapp.exe

默认:

text 复制代码
Service Name = webapp
相关推荐
2601_962055976 小时前
跟据spring boot版本,查看对应的tomcat,并查看可支持的tomcat的版本范围
spring boot·后端·tomcat
EXI-小洲6 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
YCOSA20256 小时前
雨晨 Windows 11 IoT 企业版 LTSC 26H2 轻装 26300.9278 自用版
windows·物联网
2601_961901707 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..7 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290968 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
丈剑走天涯8 小时前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
AxureMost9 小时前
Dopamine 3.0.10 音乐播放器
windows
MayZork9 小时前
Windows 与 Linux 下 vcpkg 的安装部署指南
linux·运维·windows
前端 贾公子9 小时前
第09章:上下文与记忆 (2)
java·服务器·前端