용어 뜻:
출처:
Java로 개발한 application을 배포할 때는 jar, war 형태로 배포하게 된다.
이 둘은 완전히 동일한 형식이나
war는 web application을 배포하는 형식이고
jar는 library나 일반 application을 배포하는 형식이다.
Java ARchive: jar 압축은 하나의 application 기능이 가능하도록 java 파일 등을 압축하고 지원해준다.
path 등의 경로를 유지하기 때문에 jar 파일을 사용하는 사용자들은 각 파일들에 대한 path 문제에서 벗어날 수 있다.
예를 든다면 ojdbc14.14, servlet-api,jar 등을 들 수 있다.
Web ARchive: war 압축은 jar과 달리 웹 어플리케이션을 지원하기 위한 압축방식이다.
웹 어플리케이션을 지원하기 위해서 war 압축방식은 jsp, servlet, gif, html, jar 등을 압축하고 지원해주며
이는 jar과 같은 맥락으로 servlet context 접근을 위해 관련된 모든 파일들을 패키지화하여 준다는 말이다.
추가로 Enterpriser Archive: ear 는 하나의 웹 어플리케이션 단위를 넘어 실제 서버에서 배포하기 위한 단위를 말한다.
이를 위해서 jar과 war를 묵어서 각각의 기능을 지원해준다.
jar는 어플리케이션 레벨(비즈니스 레이어)
war는 웹 어플리케이션 레벨(웹 레이어) 를 지원하도록 하는 것이다.
jar, war, ear 파일들의 특징은
1. 세 가지 모두 압축파일이다.
2. 구조적인 차이가 없다.
3. 확장자를 바꿔도 문제가 없다.
4. 만들어진 목적이 다르다.
4-1) jar: 자바 클래스 파일들이 주이며, EJB 파일들을 포함한다.
4-2) war: 웹 어플리케이션에 관련된 파일들을 포함한다. (jsp, servlet 파일들)
4-3) ear: 엔터프라이즈 애플리케이션에 필요한 모든 파일을 포함한다. (jar, war 등등)
Java Application의 배포시
META-INF 폴더에 build 시에 사용한 pom 파일을 비롯해서 MANIFEST.MF 파일이 있는 것을 알 수 있는데
이 파일은
매니페스트 버전, 빌드한 사용자, 빌드 jdk 버전, 빌드 툴 등과 같은 정보를 포함한다.
이 내용은 jar 파일에 대한 manual 이나 spec을 기록하는 폴더이다.
그리고 web-resouce와 같은 정적인 resource를 배포할 때도 역시 META-INF 폴더를 이용하게 된다.
jar 파일은 자신이 개발한 class를 가질 수도 있고 심지어 jar에 jre 까지 포함하고 다른 jar을 추가하는 것도 가능하다.
jar 형태로 구성이 되는 경우 ClassLoader에 의해 로드되는 객체들은 jar의 root에 위치하게 된다.
이 부분이 war과 jar의 가장 큰 차이를 가지고 오게 된다.
war로 패키징하는 경우에는
war의 기본 정보와 static-resource를 저장한 META-INF 폴더의 경우에는 jar과 동일하게 만들어진다.
그리고 또 다른 폴더가 하나 더 생기는데 WEB-INF 폴더이다.
이 폴더는 외부 library와 개발된 어플리케이션의 컴파일된 클래스 파일이 위치하는 classes 폴더를 포함한다.
war의 경우에는 ClassLoader에 의해 로드되는 객체들은 classes 폴더를 기준으로 로드가 이루어지게 된다.
그리고 이 안에는 web.xml이라는 매우 중요한 파일이 하나 들어가게 되는데
java web application의 구성은 기본적으로 WEB-INF/web.xml에서 결정된다.
web.xml은 필터, 서블릿, DB Source 등 web container가 구동하는데 이용되는 환경설정파일이다.
서버가 처음 로딩될 때 web.xml 파일을 읽어들여 해당 환경설정에 대해 어플리케이션 배치를 하게 된다.
다른 말로 web.xml은 배치 서술자(deployment descriptor)라고도 한다.
web.xml에 들어가는 환경설정은 다음과 같은 것들이 존재한다.
1. 필터 정보(매핑 포함)
2. 서블릿 정보(매핑 포함)
3. 웹 어플리케이션 정보
4. 세션 정보
5. 세션 정보가 소멸, 생성, 수정되는 것을 알려주는 리스너 정보
6. MIME 매핑
7. welcomefile 정보
8. errorPage 정보
9. url 보호 정보
10. 엔터프라이즈 빈의 홈 레퍼런스 정보(로컬 레퍼런스 정보 포함)
Programming is Fun, 2016-10-31, http://netframework.tistory.com/entry/18-Java-Web-Application-webxml
Hashcode, 2016-10-31, http://hashcode.co.kr/questions/778/%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C-war%EC%99%80-jar%EC%9D%98-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%94%EA%B0%80%EC%9A%94
시드라엘, 2016-10-31, http://enspring.tistory.com/512
댓글
댓글 쓰기