[英]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.