Tomcat과 같은 WAS에서 우리가 개발한 WebApplication을 구동하기 위해서는 WebApplication을 war 혹은 war(exploded)로 배포하여 Tomcat에서 실행해야한다.
해당 오류는 war파일에 문제가 생긴오류가 생겼다. 기존에 문제 있는 war(exploded)파일을 제거하고 다시 해당 프로젝트 war(exploded) 파일을 추가하면되는 간단한 문제지만 이를통해 war,jar파일의 차이가 뭐고 어느떄 war.jar 파일을 사용해 배포하는지 궁금해서 찾아보기로했다.
⭐WAR/JAR 파일이란?
📌WAR( WepApplication Archive)
- 웹 어플리케이션을 압축해 저장해 놓은 파일임.
- 개발한 웹어플리케이션 프로젝트가 WAS에서 돌아갈 수 있는 구조를 담고 있으며 JSP 및 서블릿 빈클래스 등의 소스가 컴파일 되어 저장되며 기타 이미지 및 자원들이 포함되어 있다.
원하는 구성을 할 수 있는 JAR 포맷과 달리 WAR은 WEB-INF 및 META-INF 디렉토리로 ,
사전 정의 된 구조를 사용하며 WAR파일을 실행하려면 Tomcat, Weblogic, Websphere 등의 웹 서버 (WEB)또는 웹 컨테이너(WAS)가 필요.
📌JAR
- .jar 확장자 파일에는 Class와 같은 Java 리소스와 속성 파일, 라이브러리 및 액세서리 파일이 포함되어 있습니다.
- 쉽게 JAVA 어플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일로
결론
JAR, WAR 파일 애플리케이션 리소스를 패키징 하는 방법에 차이가 있을 뿐, 뭘 사용해야 하느냐는 개발자의 판단에 따를 뿐이다. 꼭 WAR를 사용해야만 하는 이유(꼭 JSP를 사용하여 화면을 구성해야 한다 / 외장 WAS를 이용할 계획이 있다)가 아니라면 뭘 사용할지에 대한 완벽한 해답은 없는 듯하다. Sprinag boot에서 가이드하는 표준은 JAR이니까 JAR를 사용하여 서비스하는 것도 괜찮은 선택이라고 본다.
⭐빌드 와 배포
위에서 저런 war,jar 파일을 만들기위해선 빌드라는 과정을 거쳐야한다, 그런 빌드를 자동으로 해주는 도구가 바로 maven이다. 빌드 자동화도구는 (ant,maven,gradle)이 있다
📌 빌드란?
빌드(build): 소스 코드를 실행 가능한 소프트웨어로 변환하는 과정
빌드과정
1 .컴파일
개발자가 작성한 소스코드를 -> 컴퓨터가 이해할수있는 바이너리 코드로 변환한다 0과1
( 자바의 경우 ,JVM에서 실행가능한 바이트코드 형태의 클래스 파일이 생성이 됀다.)
2.링크
자바코드를 작성해서 compile을 하면 컴퓨터가 이해하기 쉬운 기계어로 번역된 목적코드들이 생긴다. 하지만 우리가 코드를 작성할 때는 라이브러리를 이용하기도 하고 다른 소스코드에 있는 함수를 사용하기도 한다. 그래서 이를 연결시키는 작업이 필요한데 이것을 바로 링크라고 한다.
3.패캐징
연결된 클래스 및 리소스 파일을 묶어준다.
4.테스트
기능 테스트
이러한 1~4번 과정을 모두 빌드라고 함.
📌 배포란?
배포(deployment): 빌드가 완성된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시키는 일
참고: