[컴] Reactor netty 에서 initial line length 변경 방법

 

DEFAULT_MAX_INITIAL_LINE_LENGTH

Reactor netty 에서 initial line length 변경 방법

curl "http://localhost:8080/my-param-34239892852....?a=fjkdjsljgkl"

위와 같이 너무 긴 URI 를 'Reactor Netty 를 사용하는 WAS(Web application Server)' 로 request 를 보냈다.

그래서 다음과 같은 error 가 발생했다.

io.netty.handler.codec.http.TooLongHttpLineException : an HTTP line is larget than 4096 bytes.
  ...

이슈의 원인은 netty 의 기본 설정된 DEFAULT_MAX_INITIAL_LINE_LENGTH 값때문이다.

수정방법

아래 코드 처럼 maxInitialLineLength() 를 해주면 된다.

import reactor.core.publisher.Mono;
import reactor.netty.DisposableServer;
import reactor.netty.http.server.HttpServer;

public class Application {

    public static void main(String[] args) {
        DisposableServer server =
                HttpServer.create()
                          .httpRequestDecoder(spec -> spec.maxInitialLineLength(16384)) 
                          .handle((request, response) -> response.sendString(Mono.just("hello")))
                          .bindNow();

        server.onDispose()
              .block();
    }
}

References

  1. 5.5.3. HTTP Request Decoder | Reactor Netty Reference Guide

댓글 없음:

댓글 쓰기