首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在嵌入Jetty的Spring Boot中禁用到/error的org.eclipse.jetty.server.error_page.global映射

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

Stack Overflow用户
提问于 2018-12-13 17:57:53
回答 1查看 876关注 0票数 1

我正在使用Spring Boot2.0.3和Jetty,我想完全删除错误页处理程序,以便在出错的情况下它会很快失败,不想创建/error端点,也不想用另一个404...的/error路由失败,我尝试:

使用jettyServerCustomizer,它不能访问正确的属性。

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

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

已尝试覆盖ErrorPageCustomizer Bean...它是一个没有任何条件的私有类

还能做些什么呢?

EN

回答 1

Stack Overflow用户

发布于 2018-12-18 22:27:29

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

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

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

您看到"/error“这一事实表明,您的环境中的某些东西正在故意将”全局错误页“设置为该值。

例如:

代码语言:javascript
运行
复制
<!-- 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,那就打电话给...

代码语言:javascript
运行
复制
ErrorPageErrorHandler errors = (ErrorPageErrorHandler) webappContext.getErrorHandler();
errors.addErrorPage(ErrorPageErrorHandler.GLOBAL_ERROR_PAGE, "/myglobalerror");

同样,请注意,您不能将其设置为null或empty或“我不想设置”的任何其他变体,因为这仍然会导致默认的错误页面呈现和行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53759179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档