我正在使用Spring Boot2.0.3和Jetty,我想完全删除错误页处理程序,以便在出错的情况下它会很快失败,不想创建/error端点,也不想用另一个404...的/error路由失败,我尝试:
使用jettyServerCustomizer,它不能访问正确的属性。
扩展WebServerFactoryCustomizer,它只添加错误处理程序,但不能覆盖全局处理程序。
尝试通过应用程序yml错误部分进行配置,您不能覆盖默认的/error配置。
已尝试覆盖ErrorPageCustomizer Bean...它是一个没有任何条件的私有类
还能做些什么呢?
发布于 2018-12-18 22:27:29
“全局错误页”是一种强制的Servlet 3.0+行为,您不能禁用它,只能将其配置为您想要的样子。
默认情况下,默认安装Jetty的“全局错误页”位置是未定义的,这意味着它将导致由ErrorHandler呈现的默认错误页。
要配置Servlet 3.0+“全局错误页”,您需要定义一个web描述符(在您的WEB-INF/web.xml中),使其具有一个没有声明的状态代码或异常的error-page条目。
您看到"/error“这一事实表明,您的环境中的某些东西正在故意将”全局错误页“设置为该值。
例如:
<!-- defined as servlet spec global error page -->
<error-page>
<location>/global-error</location>
</error-page>
<!-- defined by response status code -->
<error-page>
<error-code>500</error-code>
<location>/generic-error-on-server</location>
</error-page>
<!-- defined by exception type -->
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/error-in-io</location>
</error-page>在嵌入式Jetty中,WebAppContext可用于调用getErrorHandler(),它至少始终是一个org.eclipse.jetty.server.handler.ErrorHandler,但也可以是更常用的org.eclipse.jetty.servlet.ErrorPageErrorHandler。
如果你拿到了org.eclipse.jetty.servlet.ErrorPageErrorHandler,那就打电话给...
ErrorPageErrorHandler errors = (ErrorPageErrorHandler) webappContext.getErrorHandler();
errors.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE, "/myglobalerror");同样,请注意,您不能将其设置为null或empty或“我不想设置”的任何其他变体,因为这仍然会导致默认的错误页面呈现和行为。
https://stackoverflow.com/questions/53759179
复制相似问题