Spring boot 웹 어플리케이션 개발시 Local 에서는 잘만 되던게, WAR 파일로 서버에 배포하면 404 error 날 때가 있다. 서버 로그에는 별 메시지가 없다. 단지 배포가 잘됐다는...;
INFO [dev.example.com-startStop-3] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/var/lib/tomcat8/webapps/auth/ROOT.war] has finished in [2,533] ms | cs |
이럴 경우 local 에서 되던게 server 에서 안되는 것이니 서버 설정에 문제를 예상할 수도 있지만, 서버는 에러 발생 시 로그를 남긴다; 로그 없는 이 상황은 뭐라고 검색하기도 난해하고 참... 예상되는 문제를 하나씩 점검해 보는 수 밖에 없다. 내 경우는 main 클래스에 SpringBootServletInitializer 를 상속하지 않아서 생긴 현상임을 알게 됐다...
main 클래스에서 SpringBootServletInitializer 상속받고 configure 오버라이드 하면 된다.
@SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } | cs |
이렇게 하면 컨테이너가 실행될 때 war로 배포된 Spring 웹 어플리케이션 컨텍스트가 준비된다.
Servlet3.0 이전의 web.xml 역할을 하는 셈.
또 깜빡하더라도 빨리 캐치하자.ㅋ
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,