본문 바로가기
Programming/Spring Boot

JAR와 WAR이 뭐지?

by 추천캐릭터 2022. 10. 29.
728x90

● 자바 파일을 배포하는 방법

 

JAR vs WAR

JAR

 - JAR은 Java Archive의 약자이다. class 및 설정 파일들을 압축해서 만들어진 하나의 어플리케이션 혹은 라이브러리다.

WAR

- WAR은 Web Application Archive의 약자이다. JSP나 Servlet 등 WAS 컨테이너 위에서 동작하게 빌드된 형태이다.

- 웹 어플리케이션을 어떻게 설정할 지에 대한 정의가 있는 web.xml 파일을 포함하고 있다. WAS가 동작을 하면 이 파일에서 설정들을 불러온다.

 

스프링부트에서 JAR와 WAR

- 스프링부트 프로젝트를 새로 생성할 때, jar 또는 war로 패키징 방식을 선택할 수 있다.

- 두 방식 모두 WAS 컨테이너 위에서 동작하게 되는데, 이는 JAR파일에 WAS가 내장되어 있기 때문이다. embeded tomcat을 jar에 내장해 jar파일로도 빌드가 가능하다.

- 따라서 기존 톰켓과 같은 컨테이너를 이용해야 했든 스프링보다 훨씬 간단하게 어플리케이션을 제작/배포할 수 있다.

- 하지만 외부 WAS를 이용해야 할 경우 WAR파일로 패키징을 해야한다.

JAR 배포 시 JSP 템플릿 프레임워크 작동하지 않음

- 스프링부트 공식문서에 따르면 JSP 프레임워크는 jar 배포시 작동하지 않는다고 되어있다.

- jsp는 jar로 배포 할 경우, src/main/resource/META-INF/resources/WEB-INF/jsp에 jsp파일을 두면 jar에 포함 되고, view도 찾을수 있다.

 - 추가 : src/main/resource/application.properties 이곳에 두 라인 추가하면 된다.


  spring.mvc.view.prefix=/WEB-INF/views/
  spring.mvc.view.suffix=.jsp


 마무리

 - 외장 WAS를 사용할 경우 WAR 배포

 - 내장 WAS를 사용할 경우 JAR 배포

 - JAR와 다르게 WAR은 WEB-INF 및 META-INF 디렉토리로 사전 정의된 구조를 사용하며, WAR 파일을 실행 할 경우 Tomcat, Weblogic, Websphere 등 웹서버(WEB)와 WAS가 필요하다.

728x90

'Programming > Spring Boot' 카테고리의 다른 글

메이븐(Maven)과 그래들(Gradle)  (0) 2022.10.29

댓글