JAR이란?
- 자바는 여러 클래스와 리소스를 묶어 'JAR(Java Archive)'라고 하는 압축 파일을 만들 수 있다.
- 이 파일은 JVM 위에서 직접 실행되거나 또는 다른 곳에서 사용하는 라이브러리로 제공된다.
- 직접 실행하는 경우 main() 메서드가 필요하고, 'MANIFEST.MF' 파일에 실행할 메인 메서드가 있는 클래스를 지정해두어야 한다.
war 파일을 말아서 압축을 푼 결과 -> META-INF, WEB-INF, index.html이 생긴 것을 볼 수 있다.
war 파일 압출 해제 명령어: jar -xvf .\server-0.0.1-SNAPSHOT.war
- Jar는 클래스와 관련 리소스를 압축한 단순한 파일
- 필요한 경우 이 파일을 직접 실행할 수도 있고, 다른 곳에서 라이브러리로 사용할 수도 있다.
WAR이란?
- WAR(Web Application Archive)
- 웹 어플리케이션 서버(WAS)에 배포할 때 사용하는 파일
- Jar 파일이 JVM위에서 실행된다면, WAR는 웹 어플리케이션 서버 위에서 실행된다.
처음에 이게 뭘까? 생각이 들었습니다.
Was에는 Jvm이 없는데 실행이 된다고? 어떻게?
WAS 내부적으로 JVM이 존재한다는 것을 찾았습니다.
WAS, Java Servlet 동작 방식 한눈에 알아보기_chapter 1
이 글에서는 인터 환경의 웹 애플리케이션을 서비스하기 위해서 어떤 기술이 필요한지 기본 개념을 설명하고, 기술에 대한 이해를 위해서 간단한 WAS 를 직접 구현해 보면서 알아보려고 합니다.
www.openmaru.io
- 웹 어플리케이션 서버 위에서 실행되고, HTML 같은 정적 리소스와 클래스 파일을 모두 함께 포함하기 때문에 JAR와 비교해서 구조가 복잡하다.
War의 구조
- WEB-INF
- classes : 실행 클래스 모음
- lib : 라이브러리 모음
- web.xml : 웹 서버 재치 설정 파일(생략 기능)
- index.html : 정적 리소스
- WEB-INF 폴더 하위는 자바 클래스와 라이브러리, 설정 정보가 들어가는 곳
- WEB-INF 를 제외한 나머지 영역은 HTML, CSS 같은 정적 리소스가 사용되는 영역
WAR 파일을 실행해보자
- 톰캣을 깔았다고 가정
- https://tomcat.apache.org/download-10.cgi
Apache Tomcat® - Apache Tomcat 10 Software Downloads
Welcome to the Apache Tomcat® 10.x software download page. This page provides download links for obtaining the latest version of Tomcat 10.1.x software, as well as links to the archives of older releases. Unsure which version you need? Specification versi
tomcat.apache.org
- 톰켓 서버를 종료한다.
- '톰켓폴더/webapps' 하위를 모두 삭제한다.
- 빌드된 'server-0.0.1-SNAPSHOT.war'를 복사한다.
- '톰켓폴더/webapps' 하위에 붙여넣는다.
- '톰켓폴더/webapps/ROOT.war'
- 이름을 변경한다.
- '톰켓폴더/webapps/ROOT.war'
- 톰켓 서버를 실행한다.
주의
- 'ROOT.war'에서 'ROOT'는 대문자를 사용해야 한다.
- 기존에 webapps에 있는 파일 모두 삭제
- SNAPSHOT.war 파일을 옮긴 후
- 이름을 ROOT.war로 바꿔준다.
- 그리고 톰캣 실행
- was기능도 사용해봐야지? 동적으로 뿌려주는
- 지금 내 컴퓨터의 jdk11이 환경변수로 등록되어 있어 예외가 발생하였다!
- has been compiled by a more recent version of the Java Runtime
- 버전을 올려달라. 이말이였다.!
- 예전에 jdk11로 여러 실습을 하였기에 발생한 문제
짜잔 그래도 war 파일을 tomcat의 디렉토리에 위치시켜 실행까지 해보았다.
후기
- 현재 회사는 배포를 진행할 때 tomcat, jeus등 was에 war 파일을 올려 배포를 한다.
- 원리를 알 수 있었다.
- jar war 처음에 너무 헷갈렸는데, 어디가서 설명할 수준까지는 될 것같다.!
'Spring관련 기술 > Spring' 카테고리의 다른 글
Jackson ObjectMapper Error NestedServletException 해결방법 (0) | 2023.08.03 |
---|