如何在Tomcat启动(catalina.bat start)时同步启动Spring Boot Jar包
可行实现方法
方法1:编写批处理脚本同时启动Tomcat和Jar包
直接写一个.bat脚本整合两个启动命令,执行一次脚本就能同时拉起两个服务。
- 新建
start_all.bat文件,填入以下内容(替换路径为实际路径):
@echo off :: 启动Tomcat,单独开窗口显示日志 start "Tomcat" cmd /k "C:\your-tomcat-path\bin\catalina.bat start" :: 启动API网关Jar包,单独开窗口显示日志 start "API Gateway" cmd /k "java -jar C:\your-gateway-path\gateway.jar"
- 如果不想显示命令行窗口,改成后台运行:
@echo off start /b "Tomcat" cmd /c "C:\your-tomcat-path\bin\catalina.bat start" start /b "API Gateway" cmd /c "java -jar C:\your-gateway-path\gateway.jar"
- 双击运行这个批处理脚本即可同时启动两者。
方法2:将网关Jar注册为Windows服务,和Tomcat服务联动
如果Tomcat已经是Windows服务,把网关也转成服务,设置自动启动,就能实现开机或手动启动时两者同步运行。
- 下载WinSW工具(轻量的Java程序转服务工具),重命名为
gateway-service.exe,和网关Jar放在同一目录; - 同目录下新建
gateway-service.xml配置文件:
<service> <id>APIGateway</id> <name>API Gateway Service</name> <description>Spring Cloud API Gateway 服务</description> <executable>java</executable> <arguments>-jar "C:\your-gateway-path\gateway.jar"</arguments> <logmode>rotate</logmode> </service>
- 以管理员身份打开命令行,进入该目录执行
gateway-service.exe install完成注册; - 在Windows服务管理器中,把这个服务的启动类型设为
自动,和Tomcat保持一致,之后开机或手动启动服务时两者会同时运行。
方法3:修改Tomcat启动脚本,嵌入网关启动命令
直接修改Tomcat的catalina.bat,在Tomcat启动逻辑后加入网关启动命令。
- 打开Tomcat/bin目录下的
catalina.bat; - 找到
:start标签区域,在Tomcat启动命令执行后添加:
:: 后台启动API网关 start /b "API Gateway" java -jar C:\your-gateway-path\gateway.jar
- 保存后执行
catalina.bat start,Tomcat启动的同时会自动拉起网关。
补充:为什么shared.loader没用?
shared.loader是Tomcat用来加载共享类库的配置,作用是让多个Web应用共用一些Jar包,根本不是用来启动独立Spring Boot应用的。你的网关Jar是带内置Tomcat的独立进程,和外部Tomcat是两个完全分开的服务,所以用shared.loader不可能启动它。
内容的提问来源于stack exchange,提问作者bharathi
相关产品推荐
相关产品推荐

