如何从命令行停止Spring启动服务?

时间:2016-07-14 14:38:40

标签: java windows spring spring-boot microservices

我是一个春季新手,所以请放轻松我。

我需要为管理员提供一种方法来启动和停止来自作业调度程序的spring-boot微服务。如果我可以为服务创建start.batstop.bat个文件,那么调度程序可以调用它们。

如何在不中断进程的情况下从命令行停止spring-boot微服务?如果可能的话,我想要一个优雅的退出。

主机将是Windows服务器。

4 个答案:

答案 0 :(得分:4)

如果项目中包含Spring Boot Actuator,则可以启用关闭端点(默认情况下不启用)。这意味着如果您向http://yourserver.com/yourapp/shutdown发出请求,应用程序将正常关闭。管理员可以使用curl等标准工具来执行此类请求。

请参阅Spring Boot参考文档中的Endpoints。您可以通过将以下内容添加到application.properties

来启用关闭端点
endpoints.shutdown.enabled=true

当然,您希望限制对此端点的访问,否则任何有权访问该服务的人都可以执行请求并关闭该应用程序。

答案 1 :(得分:2)

在cmd中:

netstat -ano | findstr :[port_on_which_app_runs]

然后

taskkill /PID [PID_of_the_app] /F

找到了here

答案 2 :(得分:1)

使用cmd杀死进程的最简单方法是键入以下单行命令:

> kill $(lsof -t -i:port_num)

答案 3 :(得分:0)

从 spring 2.3 版开始,支持通过 spring 属性正常关闭

server.shutdown=graceful

对于新的传入请求,如果有任何正在进行的请求尚未处理,服务器将立即发出 503“服务不可用”的默认时间,我们可以通过以下属性进行更改

spring.lifecycle.timeout-per-shutdown-phase=1m