Springboot 내장 톰캣&외부 톰캣

YOBY·2024년 6월 17일
0

로컬에서 스프링 프로젝트를 개발후 외부 톰캣에 배포할때 내장 톰캣과 외부 톰캣이 충돌이나서 제대로 실행이 안될수도 있습니다.


1. spring-boot-starter-tomcat 의존성 provided로 변경

  • 내장 톰캣을 사용하지 않도록 pom.xml 파일에서 spring-boot-starter-tomcat 의존성을 provided 스코프로 변경합니다.
    이렇게 하면 WAR 파일을 생성할 때 내장 톰캣이 포함되지 않습니다.
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'

3. Spring Boot 설정 변경

  • Spring Boot 애플리케이션 클래스를 변경하여 내장 톰캣이 아닌 외부 톰캣에서 실행되도록 설정합니다.
    SpringBootServletInitializer를 확장하고 configure 메서드를 오버라이드합니다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class MyApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(MyApplication.class);
    }
}

4. WAR 파일 빌드

Gradle을 사용하여 WAR 파일을 빌드합니다.

plugins {
	id 'war'
}

5. 외부 톰캣 - 웹 애플리케이션 컨텍스트 설정

  • 외부 톰캣의 conf/server.xml 파일에서 요소를 사용하여 웹 애플리케이션의 컨텍스트 경로를 설정할 수 있습니다.
<Context path="/my-application" docBase="path/to/my-application.war" />
  • 톰캣의 포트 설정

외부 톰캣이 사용하는 포트를 변경하려면 conf/server.xml 파일에서 요소의 port 속성을 수정합니다. 기본적으로 8080 포트를 사용합니다.

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

위의 단계들을 따르면, 스프링 부트 애플리케이션은 내장 톰캣 대신 외부 톰캣 서버에서 실행될 것입니다.

       

0개의 댓글

관련 채용 정보