Spring Boot는 내부 톰캣이 있고.. jar로 빌드한다..
하지만... JSP를 써야했고.. war로 외부 톰캣에 배포해야 할 일이 생겼다...
war로 빌드
일단 war
로 빌드하는 설정은 아주 간단하다.. id 'war'
를 추가해주면 와르로 와르르
plugins {
id 'org.springframework.boot' version '2.5.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
id 'war'
}
근데 이렇게만 하고 자연스럽게 배포했고, 로그에 started.. 잘 됐다고 떴는데 404에러가 떴다..
알고보니 외부 톰캣을 사용할 때는 여러 설정을 더 해줘야 한다고하네유..
Main 클래스 수정
스프링 부트의 메인 클래스인.. @SpringBootApplicaion
애노테이션이 붙은.. 그 클래스에SpingBootServletInitializer
를 상속받아야 한다.
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
당연히 jar로 빌드할 때는 필요 없다.
그리고 이걸 읽어보자.. Spring Boot 웹 애플리케이션을 WAR로 배포할 때 왜 SpringBootServletInitializer를 상속해야 하는걸까?
build.gradle 수정
JSP를 사용하기 위해 추가한 tomcat-embed-jasper
를implementation
에서 providedCompile
로 변경해줬다.
이렇게 변경하면 war로 빌드할 때 해당 의존성은 제거되면서 빌드된다고 함..
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
providedCompile 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl:1.2'
// 생략
}
끝.. 카페 24 tomcat jsp 호스팅을 했는데... 404가 뜬다..? 이렇게 해보세요..^^
'STUDY > Spring' 카테고리의 다른 글
Spring Boot | Spring Security JWT 인증 처리 과정 (1) | 2022.02.10 |
---|---|
Spring Boot | Request 마다 로그 찍기 (0) | 2022.01.21 |
Spring | JDBCTemplate 사용하기 (0) | 2021.11.19 |
JPA | @Converter, @Convert (+ @Convert 먹히지 않을 때) (0) | 2021.11.01 |
Spring Boot | SMTP (worksmobile 메일) (0) | 2021.10.22 |