Пользовательский ErrorController не работает, если в соединении отказано ошибка в фильтре Zuul SimpleHostRouting - PullRequest
0 голосов
/ 16 апреля 2019

Я настроил обработку исключений в шлюзе Zuul, реализовав интерфейс ErrorController.Мое требование состоит в том, чтобы перенаправить пользователя на одну страницу внешней ошибки (которая является общей для разных проектов).Он работает нормально, за исключением случаев, когда 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.Я не уверен, как заставить это работать.

Может кто-нибудь помочь, что здесь может быть не так?

...