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이 존재한다는 것을 찾았습니다.
- 웹 어플리케이션 서버 위에서 실행되고, 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
- 톰켓 서버를 종료한다.
- '톰켓폴더/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 |
---|