是否可以重新启动springboot应用程序?

问题描述 投票:1回答:2

我知道通过向http://host:port/shutdown发送http post请求,我们可以关闭Springboot应用程序。是否可以通过在生产环境中发送http请求来重新启动整个springboot应用程序?所以我们不需要登录服务器来做到这一点。谢谢。

java spring-boot
2个回答
1
投票

我不认为存在这样的事情,我会很高兴得到证明:

Spring启动不会对它运行的环境做任何假设。所以当Spring启动过程关闭时,重新启动它是弹簧启动基础设施的“超出能力”,这只是一堆运行在一个内部的java类。 JVM进程。

您可以在Here中找到弹簧引导所暴露的端点列表。您在那里提到了一种“关闭”方法,但没有暴露“重启”功能。

现在还有其他技术可能有所帮助:如果应用程序由于某些spring bean的某些非法状态而关闭,那么暴露一些将“清理”状态并使应用程序再次运行的端点可能是有意义的。如果由于配置文件或其他内容的更改而必须重新启动应用程序,那么您可能需要考虑使用spring cloud的Refresh Scope for Beans。在这里提供更多信息有点困难,因为你没有提到关闭应用程序的原因,但我猜你已经有了方向。

话虽如此,根据应用程序运行的环境,可能有一些不同的方法可以实现您的需求:

  • 例如,如果您在AWS中运行,则可以利用其自动扩展策略,远程关闭应用程序,AWS将为您运行另一个实例。我不是AWS的专家,但我看到这个在ECS中工作。
  • 如果你只是在某个服务器上运行“java -jar”并且想要确保当你的进程结束时(通过使用'shutdown')它应该再次启动,它可以使用某种包装进程来封装进程在服务和跟踪服务可用性。甚至还有现成的解决方案,比如Tanuki wrapper(我不是这个产品的附属产品,但它曾经使用过它的免费版本并且它很棒)
  • 如果您正在使用Docker基础架构,您可以更改策略并在关闭时自动重新启动容器,我自己并没有使用它,但根据This excellent blog post的说法是完全可行的。

0
投票

你应该看看Spring boot jenkins你还会找到一篇小文章,解释如何在jenkins上配置项目。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.