티스토리 뷰

SpringBoot 프로젝트를 내장 톰캣을 이용해 jar로 배포하지 않고, 외장 톰캣을 이용해 war로 배포할 때, 404 오류가 발생하는 경우엔 대부분 SpringBoot 애플리케이션을 초기화하지 않아 외장 톰캣이 인식을 못하는 경우입니다. 그럴 땐 main 함수가 있는 java 소스로 이동하여 아래 내용을 추가하셔야 합니다.

 

Initializer 추가

@SpringBootApplication
public class MyApp extends SpringBootServletInitializer implements WebApplicationInitializer {

	public static void main(String[] args) {
		try {
			SpringApplication.run(PharmorderApiApp.class, args);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected WebApplicationContext run(SpringApplication application) {
		return super.run(application);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(MyApp.class);
	}
}
  • SpringBootServletInitializer : Spring Boot 애플리케이션을 외장 톰캣에 배포할 때 사용됩니다. 이 클래스는 SpringApplicationBuilder를 사용하여 애플리케이션의 컨텍스트를 설정하고 초기화합니다.
  • WebApplicationInitializer : 3.0 이상에서 웹 애플리케이션을 프로그램 matically 설정할 때 사용됩니다. 이 인터페이스는 서블릿 컨테이너에 의해 호출되어 웹 애플리케이션의 설정을 구성합니다.

사실상 SpringBootServletInitializer 가 WebApplicationInitializer를 포함하고 있기 때문에 직접 구현할 필요는 없으나 해당 소스에서는 기록용으로 작성해두었습니다. 참고부탁드립니다.

감사합니다.

최근에 올라온 글
Total
Today
Yesterday