繁体   English   中英

如何在带有嵌入式Jetty的Spring Boot中禁用org.eclipse.jetty.server.error_page.global到/ error的映射

[英]How to disable the org.eclipse.jetty.server.error_page.global mapping to /error in Spring Boot with Embedded Jetty

我正在将Spring Boot 2.0.3与Jetty一起使用,我想完全删除错误页面处理程序,因此在发生错误的情况下它将快速失败,不想创建/ error端点并且不想/ error路由失败与另一个404 ...,我尝试了:

使用jettyServerCustomizer,它无法访问正确的属性。

扩展WebServerFactoryCustomizer时,它仅添加错误处理程序,但不能覆盖全局处理程序。

尝试通过应用程序yml错误部分进行配置,您无法覆盖默认的/ error配置。

尝试覆盖ErrorPageCustomizer Bean ...这是一个没有条件的私有类

还有什么可以做的?

“全局错误页面”是Servlet 3.0+的强制性行为,您不能禁用它,只需将其配置为您想要的样子即可。

默认情况下,未默认安装Jetty的“全局错误页面”位置是未定义的,这意味着它将导致由ErrorHandler呈现的默认错误页面。

要配置Servlet 3.0+“全局错误页面”,您将定义一个Web描述符(在WEB-INF/web.xml )以具有一个error-page条目,而无需声明状态代码或异常。

您看到“ /错误”的事实表明您的环境中有意将“全局错误页面”设置为该值。

例如:

<!-- 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或为空,也不能将其设置为“我不要设置”的任何其他变体,因为这仍将导致默认错误页面呈现和行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM