Eric Eric - 4 months ago 338
Java Question

How to stop a spring boot service from command line?

I’m a spring-boot newbie, so please go easy on me.

I need to offer a way for an administrator to start and stop my spring-boot microservice from a job scheduler. If I can create

start.bat
and
stop.bat
files for the service, then the scheduler could call them.

How do I stop a spring-boot microservice from command line without killing the process? I'd like a graceful exit, if possible.

The host will be a Windows server.

Answer

If you have Spring Boot Actuator included in your project, you can enable a shutdown endpoint (by default it is not enabled). This means that if you make a request to: http://yourserver.com/yourapp/shutdown, the application will shutdown gracefully. An administrator could do such a request using a standard tool such as curl.

See Endpoints in the Spring Boot reference documentation. You can enable the shutdown endpoint by adding the following to your application.properties:

endpoints.shutdown.enabled=true

Ofcourse, you'll want to restrict access to this endpoint, otherwise anyone who has access to the service could do a request and shutdown the application.