복붙노트

[SPRING] Spring Boot Tomcat 설정, 컨테이너에서 임베디드로의 마이그레이션

SPRING

Spring Boot Tomcat 설정, 컨테이너에서 임베디드로의 마이그레이션

Tomcat 컨테이너에서 실행되는 Spring 부트 애플리케이션을 임베디드 Tomcat을 실행하는 Spring Boot 애플리케이션으로 마이그레이션하려고한다. 내 오래된 Tomcat 구성은 server.xml에 다음과 같은 구성을 가지고있다.

<Connector 
    executor="tomcatThreadPool"
    port="8080"
    protocol="org.apache.coyote.http11.Http11NioProtocol"
    acceptCount="500"
    acceptorThreadCount="2"
    maxThreads="150"
    maxHttpHeaderSize="32768"
    maxHeaderCount="256"
    connectionTimeout="20000"
    maxKeepAliveRequests="-1"
    redirectPort="8443"
    useComet="false"
    socket.appReadBufSize="87380"
    socket.rxBufSize="87380"
    socket.performanceConnectionTime="2"
    socket.performanceLatency="0"
    socket.performanceBandwidth="1"
    server="My server"
    />

나는 빈을 사용하여 대부분의 속성을 설정할 수 있었다.

@Bean
public EmbeddedServletContainerFactory embeddedServletContainerFactory() {
    TomcatEmbeddedServletContainerFactory tomcatEmbeddedServletContainerFactory = new TomcatEmbeddedServletContainerFactory();
    tomcatEmbeddedServletContainerFactory.setProtocol("org.apache.coyote.http11.Http11Nio2Protocol");
    tomcatEmbeddedServletContainerFactory.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
        AbstractHttp11JsseProtocol<Nio2Channel> handler = (AbstractHttp11JsseProtocol)connector.getProtocolHandler();
        handler.setMaxKeepAliveRequests(-1);
        handler.setAcceptorThreadCount(2);
        handler.setMaxHeaderCount(256);
        connector.setRedirectPort(8443);
    });

    return tomcatEmbeddedServletContainerFactory;
}

그리고 application.xml 속성 :

server.tomcat.accept-count = 500
server.tomcat.max-threads = 600
server.port = 8080
server.max-http-header-size = 32768
server.connection-timeout = 20000

그러나 나는이 부분을 설정하는 방법을 알아낼 수 없다.

useComet="false"
socket.appReadBufSize="87380"
socket.rxBufSize="87380"
socket.performanceConnectionTime="2"
socket.performanceLatency="0"
socket.performanceBandwidth="1"
server="My server"

누구든지 나를 도울 수 있습니까? 고맙습니다

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    connector.setProperty("useComet", Boolean.toString(false));
    connector.setProperty("socket.appReadBufSize", "87380");
    connector.setProperty("socket.rxBufSize", "87380");
    connector.setProperty("socket.performanceConnectionTime", "2");
    connector.setProperty("socket.performanceLatency", "0");
    connector.setProperty("socket.performanceBandwidth", "1");
    connector.setProperty("server", "My server");
    
  2. ==============================

    2.

    connector.setProperty("socket.appReadBufSize", "87380");
    connector.setProperty("socket.rxBufSize", "87380");
    connector.setProperty("socket.performanceConnectionTime", "2");
    connector.setProperty("socket.performanceLatency", "0");
    connector.setProperty("socket.performanceBandwidth", "1");
    connector.setProperty("server", "My server");
    

    잘 했어. 그러나 connector.setProperty의 반환 값을 확인하는 것이 중요합니다. 모든 속성을 호출 할 올바른 메서드를 찾으려고 시도하고 메서드가 발견되고 속성이 설정된 경우 true를 반환합니다. 불행하게도 connector.setProperty ( "useComet", Boolean.toString (false)); 작동하지 않았고 거짓으로 돌아 왔습니다.

  3. from https://stackoverflow.com/questions/44791514/spring-boot-tomcat-configuration-migration-from-container-to-embedded by cc-by-sa and MIT license