Управление обработкой ошибок с помощью seedstack и undertow - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно управлять ошибками HTTP, настроив общее сообщение об ошибке, чтобы скрыть ошибки на стороне сервера в ответе HTTP.

Я использую Seedstack и встроенный сервер.Я нашел, как управлять ошибками, используя HttpHandler, я просто еще не нашел, как интегрировать этот обработчик ошибок в SeedStack.

My SimpleErrorPageHandler

public class SimpleErrorPageHandler implements HttpHandler {

    private final HttpHandler next;

    public SimpleErrorPageHandler(final HttpHandler next) {
        this.next = next;
    }

    @Override
    public void handleRequest(final HttpServerExchange exchange) throws Exception {
        exchange.addDefaultResponseListener(exchange1 -> {
            if (!exchange1.isResponseChannelAvailable()) {
                return false;
            }
            if (exchange1.getStatusCode() == 500) {
                final String errorPage = "<html><head><title>Error</title></head><body>Internal Error</body></html>";
                exchange1.getResponseHeaders().put(Headers.CONTENT_LENGTH, "" + errorPage.length());
                exchange1.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html");
                Sender sender = exchange1.getResponseSender();
                sender.send(errorPage);
                return true;
            }
            return false;
        });
        next.handleRequest(exchange);
    }
}

1 Ответ

0 голосов
/ 24 июля 2019

Текущая версия SeedStack не позволяет определять собственный обработчик HTTP Undertow.Только HTTP-обработчик для поддержки сервлета жестко запрограммирован.В будущем мы планируем ввести возможность * 1002. *, а также страница ошибки по умолчанию.Это будет сделано так:

web:
  server:
    errorPages:
      - location: /errors/404.html
        errorCode: 404
      - location: /errors/415.html
        errorCode: 415
      - location: /errors/default.html

Эта функция будет выпущена в следующем SeedStack 19.7 в конце июля.

...