dropwizard应用程序中的自定义ErrorHandler

时间:2018-05-14 16:50:06

标签: error-handling jetty dropwizard managed-bean

我试图在dropwizard 1.0.2中设置自定义ErrorHandler

在run方法的Application类中,我有以下几行:

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

然而,未调用来自CustomErrorHandler的代码,而是在例如使用默认的ErrorHandler类时使用我点击了无法提供的网址。

在调试问题时,我意识到ContainerLifeCycle对象包含以下bean:{org.eclipse.jetty.server.handler.ErrorHandler@375084c9,AUTO}并且不包含CustomErrorHandler的bean。我的猜测是,在应用程序启动后稍后设置默认ErroHandler时,我的错误处理程序会被覆盖。

任何指针如何设置自定义错误处理程序将非常感激。

1 个答案:

答案 0 :(得分:0)

我设法做到这一点的唯一方法是在服务器生命周期监听器中,例如

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