In the Spring Boot Document, they said that 'Each SpringApplication will register a shutdown hook with the JVM to ensure that the ApplicationContext is closed gracefully on exit.'
When I click ctrl+c
on the shell command, the application can be shutdown gracefully. If I run the application in a production machine, I have to use the command
java -jar ProApplicaton.jar
. But I can't close the shell terminal, otherwise it will close the process.
If I run command like nohup java -jar ProApplicaton.jar &
, I can't use ctrl+c
to shutdown it gracefully.
What is the correct way to start and stop a Spring Boot Application in the production environment?
Best Answer
If you are using the actuator module, you can shutdown the application via
JMX
orHTTP
if the endpoint is enabled.add to
application.properties
:Following URL will be available:
/actuator/shutdown
- Allows the application to be gracefully shutdown (not enabled by default).Depending on how an endpoint is exposed, the sensitive parameter may be used as a security hint.
For example, sensitive endpoints will require a username/password when they are accessed over
HTTP
(or simply disabled if web security is not enabled).From the Spring boot documentation