我通过实现ErrorController接口在Zuul网关中自定义了异常处理。我的要求是将用户重定向到一个外部错误页面(这在不同项目中很常见)。除SimpleHostRoutingFilter引发连接拒绝错误(即,任何下游服务未启动)的情况外,它都工作正常。在这种情况下,它将显示带有异常详细信息的标准Tomcat错误页面。以下是我对ErrorController
-
@Controller
@RequestMapping("${server.error.path:${error.path:/error}}")
public class ZuulErrorController implements ErrorController {
private static final Logger log = LoggerFactory.getLogger(ZuulErrorController.class);
@Value("${error.path:/error}")
private String errorPath;
@Value("${gateway.defaultErrorPage}")
private String defaultErrorPage;
@Override
public String getErrorPath() {
return errorPath;
}
@RequestMapping(value = "")
public void handleError(HttpServletRequest request, HttpServletResponse response) throws IOException {
log.info("Handling exception and redirecting to external page");
response.sendRedirect(defaultErrorPage);
return;
}
}
进行了将近2天的分析后,即使重定向(覆盖行为并显示Tomcat错误页面)后,过滤器处理仍在继续进行。我不确定如何使这项工作。
有人可以帮忙解决这里的问题吗?