Другие ответы здесь замечательные, но если вы хотите пойти немного дальше по стеку и легко добавить пользовательскую логику/безопасность/произвольно сложную логику выключения, то добавление крюка выключения с помощью администратора dropwizard Task - хороший шаблон ,
Просто код вашей задачи завершения работы с любой логикой вы хотите
import io.dropwizard.servlets.tasks.Task;
public class ShutdownTask extends Task {
public ShutdownTask() {
super("shutdown"); // the task name, used in the endpoint to execute it
}
public void execute(
ImmutableMultimap<String, String> immutableMultimap,
PrintWriter printWriter
) throws Exception {
// kill the process asynchronously with some nominal delay
// to allow the task http response to be sent
new Timer().schedule(new TimerTask() {
public void run() {
// any custom logging/logic here prior to shutdown
System.exit(0);
}
}, 5000);
}
}
Регистрации задачи в Application.run()
environment.admin().addTask(new ShutdownTask());
А затем выполнить его с помощью POST к следующей конечной точке на администратор порта
http://localhost:<ADMIN PORT>/tasks/shutdown
Что не так с '^ c'? –
@BoristheSpider AFAIK, если я делаю '^ C', нет гарантии, что сервер причала завершится после обработки всех принятых запросов. Или это?Если да, не могли бы вы указать мне соответствующую документацию? –