首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用windows批处理文件逐个启动spring boot jar文件?

如何使用windows批处理文件逐个启动spring boot jar文件?
EN

Stack Overflow用户
提问于 2018-05-11 16:15:38
回答 2查看 2.8K关注 0票数 1

我想使用windows批处理文件逐个启动spring boot jar文件。我已经创建了一个批处理文件,如下所示:

代码语言:javascript
运行
复制
start java -jar service1.jar --spring.profiles.active=local
start java -jar service2.jar --spring.profiles.active=local 

当我运行这个批处理文件时,两个jar文件都同时运行。但是我必须首先运行service1.jar文件,一旦它启动并运行,我就需要运行service2.jar文件。

有没有人可以帮我解决这个问题或其他问题?

EN

回答 2

Stack Overflow用户

发布于 2018-05-11 16:58:08

一个非常简单的解决方案是在新的命令进程中启动第一服务(在后台),等待例如两秒,然后在退出当前命令进程之前也在新的命令进程中启动第二服务(在后台)。

代码语言:javascript
运行
复制
@echo off
start "Service 1" /B java.exe -jar service1.jar --spring.profiles.active=local
%SystemRoot%\System32\timeout.exe /T 2 /NOBREAK >nul
start "Service 2" /B java.exe -jar service2.jar --spring.profiles.active=local

要了解所使用的命令及其工作原理,请打开命令提示符窗口,在那里执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • echo /?
  • start /?
  • timeout /?
票数 1
EN

Stack Overflow用户

发布于 2018-05-11 16:40:15

在批处理文件中使用start不会等待进程--这有点像启动一个新线程。

还有另一个函数调用(或启动/wait ),但如果不是服务,这些函数就会起作用。您遇到的问题是服务需要持续运行(您不能等待它们使用start /wait完成)。

因此,您需要在批处理文件中实现某种条件和检查,如果为真,则启动服务2。例如,如果这是一个web服务,并且有一个可用于检查其是否工作的get方法,则在启动第二个服务之前,调用该方法并等待结果。

你可以这样做:

代码语言:javascript
运行
复制
start java -jar service1.jar --spring.profiles.active=local

:isStarted

set ready=false // Here you implement some logic to check if the service is running

if %ready%=="false" goto isStarted

start java -jar service2.jar --spring.profiles.active=local

另一种解决方案是制作一个单独的java程序来测试service1,并在它启动并运行时退出。如果我们称之为"service1test“,那么你的bat文件将是:

代码语言:javascript
运行
复制
start java -jar service1.jar --spring.profiles.active=local
service1test   - without using start so it can wait
start java -jar service2.jar --spring.profiles.active=local
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50287965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档