Пользовательский ErrorHandler в приложении dropwizard - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь установить собственный ErrorHandler в dropwizard 1.0.2

В моем классе Application в методе run у меня есть следующие строки:

  environment.getApplicationContext().setErrorHandler(new CustomErrorHandler());
  environment.getAdminContext().setErrorHandler(new CustomErrorHandler());

Однако кодиз CustomErrorHandler не вызывается, вместо этого используется класс ErrorHandler по умолчанию, например, когда я нажимаю на URL, который не может быть обработан.

При отладке проблемы я понимаю, что объект ContainerLifeCycle содержит следующий компонент: {org.eclipse.jetty.server.handler.ErrorHandler@375084c9,AUTO} и не содержит компонент для CustomErrorHandler.Я предполагаю, что мой обработчик ошибок перезаписывается, когда по умолчанию ErroHandler устанавливается после запуска приложения.

Буду очень признателен за любые указания по настройке собственного обработчика ошибок.

1 Ответ

0 голосов
/ 29 мая 2018

Единственный способ, которым мне удалось это сделать, - это прослушиватель жизненного цикла сервера, например,

environment.lifecycle().addServerLifecycleListener(new ServerLifecycleListener() {
        @Override
        public void serverStarted(Server server) {
            server.setErrorHandler(new MyCustomErrorHandler());
        }
    });
...