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

时间:2017-12-16 12:19:19

标签: java spring-boot

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

2 个答案:

答案 0 :(得分: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完全可行。

答案 1 :(得分:0)

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