[Spring Boot] Tomcat 설정 바꾸는 법

가영·2021년 10월 29일
0

톰캣 8.5 버전 이상부터는 cookie의 도메인을 설정해주기위해서는 .xxx.xxx 로 해줘야한다. 그런데 톰캣 기본 cookie processor가 해당 문자열을 파싱할 때 앞의 .을 삭제하기 때문에 이전의 processor로 바꿔줘야한다.

cookie의 domain를 .으로 시작하는 문자열로 설정해주기 위해서
그래서 저렇게 커스텀 컨테이너를 만들었다. (밑에 코드 있음)

스프링부트 2부터는 WebServerFactoryCustomizer를 써야한다고 한다. 따라한 코드는 밑에 링크 있음

legacyProcessor가 제대로 달렸는지 직접적으로 확인은 못했다.
대신 포트번호를 바꿔주고 바꿔준 번호 위에 뜨는지 확인해봤다.

원래는 application.ymlserver.port 가 5000으로 설정돼있는디 8080으로 바뀐것을 확인할 수 있다.

코드

package com.daangn.errand.config

import org.apache.catalina.Context
import org.apache.tomcat.util.http.LegacyCookieProcessor
import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
import org.springframework.boot.web.server.WebServerFactoryCustomizer
import org.springframework.stereotype.Component

@Component
class CustomContainer(
    val contextCustomizer: TomcatContextCustomizer
) : WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    override fun customize(factory: TomcatServletWebServerFactory?) {
        factory?.addContextCustomizers(contextCustomizer)
    }
}

@Component
class ErrandContextCustomizer : TomcatContextCustomizer {
    override fun customize(context: Context?) {
        context?.cookieProcessor = LegacyCookieProcessor()
    }
}

참고
https://www.javaprogramto.com/2020/04/spring-boot-embeddedservletcontainercustomizer-configurableembeddedservletcontainer.html

https://www.baeldung.com/embeddedservletcontainercustomizer-configurableembeddedservletcontainer-spring-boot

0개의 댓글