[Spring Boot] 내장 톰캣 서버 설정

KUKJIN LEE's profile picture

KUKJIN LEE3주 전 작성

Spring Boot는 내장된 톰캣(Tomcat) 서버를 통해 별도의 서블릿 컨테이너 없이도 웹 애플리케이션을 손쉽게 실행할 수 있습니다.

 

내장 톰캣 서버의 주요 장점

  • 빠른 개발 환경 구축: 외부 서버 설치나 복잡한 설정 없이 애플리케이션 실행만으로 웹 서버가 동작하므로, 개발과 테스트가 용이합니다.

  • 간편한 배포: 내장 톰캣을 사용하면 독립 실행형 JAR 파일로 패키징하여 어디서나 쉽게 배포하고 실행할 수 있습니다.

  • 유연한 설정: application.propertiesapplication.yml 파일을 통해 서버 설정을 손쉽게 변경할 수 있습니다.

  • 커스터마이징 용이성: 필요에 따라 프로그램 코드로 서버 설정을 세밀하게 조정할 수 있습니다.

 

1. 내장 톰캣 서버 설정하기

1.1 포트 번호 변경

기본적으로 톰캣 서버는 포트 8080을 사용합니다. 이를 변경하려면 설정 파일에서 server.port 값을 수정합니다.

application.properties

server.port=8081

application.yml

server:
  port: 8081

 

1.2 스레드 수 및 타임아웃 설정

서버의 성능 최적화를 위해 최대 스레드 수나 커넥션 타임아웃을 조정할 수 있습니다.

(스레드 수와 타임아웃 설정을 무한정 늘리지 않는 이유는 비용과 시스템 자원의 효율성 때문입니다.)

 

application.properties

server.tomcat.max-threads=200
server.connection-timeout=5s

 

application.yml

server:
  tomcat:
    max-threads: 200
  connection-timeout: 5s

 

2. 내장 톰캣 서버 커스터마이징

프로그램 코드로 더욱 세부적인 설정을 하고 싶다면 TomcatServletWebServerFactory를 이용할 수 있습니다.

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;

@Component
public class CustomTomcatConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.setPort(8081); // 포트 번호 설정
        factory.addConnectorCustomizers(connector -> {
            connector.setProperty("maxThreads", "200"); // 최대 스레드 수 설정
            connector.setProperty("connectionTimeout", "5000"); // 커넥션 타임아웃 설정
        });
    }
}

3. 내장 톰캣 서버의 실행과 종료

  • 실행: SpringApplication.run() 메서드를 호출하면 내장 톰캣 서버가 자동으로 시작되며, 애플리케이션의 모든 서블릿과 리소스가 초기화됩니다.

  • 종료

    • 개발 환경: IDE에서 실행 중인 애플리케이션을 중지하거나 콘솔에서 Ctrl + C를 눌러 종료합니다.

    • 운영 환경: 애플리케이션 프로세스를 찾아 종료하거나 서버를 재시작합니다.

 

4. 추가적인 설정 옵션

내장 톰캣 서버는 다양한 설정 옵션을 제공합니다. 일부 유용한 설정은 다음과 같습니다.

4.1 HTTPS 설정

SSL 인증서를 사용하여 HTTPS를 활성화할 수 있습니다.

application.properties

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=비밀번호
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

New Tech Posts