当我的 Zuul 过滤器无法路由到配置的 URL 时,'RibbonRoutingFilter' 类会抛出一个 ZuulException 说“转发错误”,并且控件会转到“SendErrorFilter”类。
现在,当 SendErrorFilter 类尝试进行转发时,在此转发调用期间会发生另一个异常。
dispatcher.forward(ctx.getRequest(), ctx.getResponse());
在此前转呼叫期间发生的异常是
Caused by: java.lang.IllegalArgumentException: UT010023: Request org.springframework.cloud.netflix.zuul.filters.pre.Servlet30WrapperFilter$Servlet30RequestWrapper@6dc974ea was not original or a wrapper
at io.undertow.servlet.spec.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:103) ~[undertow-servlet-1.1.3.Final.jar:1.1.3.Final]
at org.springframework.cloud.netflix.zuul.filters.post.SendErrorFilter.run(SendErrorFilter.java:74) ~[spring-cloud-netflix-core-1.0.0.RELEASE.jar:1.0.0.RELEASE]
at com.netflix.zuul.ZuulFilter.runFilter(ZuulFilter.java:112) ~[zuul-core-1.0.28.jar:na]
at com.netflix.zuul.FilterProcessor.processZuulFilter(FilterProcessor.java:197) ~[zuul-core-1.0.28.jar:na]
最后,当控件来到我的自定义 ZuulErrorFilter 时,我没有得到原始异常。相反,我得到的异常对象是在转发期间发生的异常对象。
更新: 我发现可以将 errorPath 属性配置为指向错误处理服务。如果未配置,Zuul 默认会查找名为 /error 的服务并尝试分派到该服务。由于我们没有为 /error 提供任何服务,因此 dispatcher.forward() 正在抛出错误。
问题 我们如何跳过这个转发到错误处理服务?我们有一个 ErrorFilter 来记录错误。我们不希望有错误处理服务。