티스토리 뷰
프로젝트를 하다 보면 생각지도 많은 요건들이 튀어나온다. Springboot Framework을 써서 개발을 했는데 이걸 다른 WAS를 사용해서 기동을 하고 싶다는 요건도 있었다. Springboot는 내장 WAS를 사용하고 있는데 굳이 이걸 두고 다른 WAS를 사용하는게 이해는 잘 안가지만 뭐 어쩌겠나.. 예전에 썼던 Spring 프로젝트를 Springboot로 전환하기 의 거꾸로 된 버전이라고 할 수 있겠다. 거꾸로는 생각보다는 간단했다.
pom.xml 변경
spring-boot-starter-tomcat의 scope를 provided로 변경을 해야 한다. 만약 내가 spring-boot-starter-tomcat을 dependency로 선언을 안했어도 이거는 기본으로 되어 있는거라 scope 변경을 하려면 선언을 해줘야 한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
또한 springboot에서는 빌드 패킹으로 jar를 사용하므로(war를 사용할수도 있음) 외부 WAS에서 기동시키기 위해서 war로 packing을 하도록 한다. war로 packing 하는것은 마찬가지로 pom.xml에서 한다.
<artifactId>sample-project</artifactId>
<name>sample-project</name>
<packaging>war</packaging>
application.java (springboot main 클래스)
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(Application.class);
application.run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
springboot의 main 클래스에서는 위와 같이 SpringBootServletInitializer를 상속받아서 configure를 Override해 구현해 준다. 기존의 main메서드만 작성하던 것에서 이만큼 추가해주면 된다.
이정도 해주면 외부 WAS에서 실행 가능한 war 파일을 만들어 낼 수 있다.
maven > install 을 해서 war 파일을 만들고 이것을 Deploy 해서 WAS에 올려서 기동을 해보자.
tomcat에 war 파일 올려서 기동시키는 예제는 다음 글을 참조하도록 하자.
끝!