문서의 각 단락이 어느 리비전에서 마지막으로 수정되었는지 확인할 수 있습니다. 왼쪽의 정보 칩을 통해 작성자와 수정 시점을 파악하세요.

WAR | |
정의 | 소프트웨어 패키징 및 배포를 위한 파일 포맷 |
유형 | JAR (Java Archive) WAR (Web Application Archive) EAR (Enterprise Archive) |
주요 용도 | 웹 애플리케이션을 하나의 파일로 묶어 배포 |
관련 분야 | 자바 웹 애플리케이션 서버 (WAS) 서블릿 |
표준 | 자바 플랫폼, 엔터프라이즈 에디션 (Java EE) / 자카르타 EE |
상세 정보 | |
기술 사양 | 웹 애플리케이션의 구성 요소(서블릿, JSP, HTML, 이미지 등)를 JAR 포맷을 기반으로 묶음 표준 디렉토리 구조를 가짐 |
특징 | 웹 애플리케이션 서버(WAS)에 배포되어 실행됨 웹 애플리케이션의 배포 단위 |

WAR는 웹 애플리케이션 아카이브(Web Application Archive)의 약자이다. 이는 자바 플랫폼, 엔터프라이즈 에디션(Java EE, 현재의 자카르타 EE) 표준에 정의된 파일 포맷으로, 웹 애플리케이션을 구성하는 모든 자원을 하나의 파일로 묶어 패키징하고 배포하기 위한 목적으로 사용된다.
JAR 파일이 일반적인 자바 클래스와 라이브러리를 패키징하는 데 사용된다면, WAR는 특별히 웹 애플리케이션에 최적화된 형태이다. 서블릿, 자바서버 페이지(JSP), HTML, 자바스크립트, CSS, 정적 이미지 파일, 그리고 배포 서술자(web.xml)와 같은 설정 파일까지 모두 포함하여 단일 아카이브 파일로 만들 수 있다.
이렇게 패키징된 WAR 파일은 톰캣, 제이보스, 웹로직, 웹스피어와 같은 웹 애플리케이션 서버(WAS)에 배포된다. 서버는 WAR 파일을 받아 특정 디렉토리(보통 webapps)에 풀고, 애플리케이션을 로드하여 실행한다. 이는 애플리케이션의 이식성을 높이고, 배포 과정을 표준화하며, 버전 관리와 전달을 단순화하는 데 기여한다.
WAR는 더 큰 범위의 엔터프라이즈 애플리케이션을 패키징하는 EAR 파일의 구성 요소로 포함될 수도 있다. 주로 전자상거래 플랫폼, 기업용 포털, 콘텐츠 관리 시스템(CMS) 등 다양한 자바 기반 웹 서비스를 개발하고 배포하는 데 널리 활용된다.

WAR는 웹 애플리케이션 아카이브(Web Application Archive)의 약자로, 자바 기반의 웹 애플리케이션을 배포하기 위한 표준 파일 포맷이다. 이는 자카르타 EE (구 Java EE) 표준의 일부로 정의되어 있으며, 웹 애플리케이션 서버나 서블릿 컨테이너에서 실행 가능한 애플리케이션을 하나의 파일로 패키징하는 데 사용된다.
본질적으로 WAR 파일은 JAR 파일 포맷을 기반으로 하여 확장된 형태이다. 따라서 .war 확장자를 가지며, 내부적으로는 ZIP 압축 방식을 사용하여 여러 파일과 디렉터리를 포함한다. 이 파일은 웹 애플리케이션을 구성하는 모든 구성 요소, 예를 들어 서블릿 클래스, JSP 파일, HTML, 자바스크립트, CSS 같은 정적 웹 리소스, 그리고 배포 서술자와 같은 설정 파일들을 하나로 묶어준다.
이러한 패키징 방식은 개발과 배포 과정을 크게 단순화한다. 개발자는 애플리케이션의 모든 부분을 하나의 WAR 파일로 생성하면 되며, 시스템 관리자는 이 파일을 웹 애플리케이션 서버의 특정 디렉터리에 복사하는 것만으로 애플리케이션을 배포하거나 업데이트할 수 있다. 서버는 WAR 파일을 자동으로 인식하고 압축을 풀어 애플리케이션을 실행한다.
따라서 WAR의 주요 목적은 웹 애플리케이션의 이식성과 배포 편의성을 보장하는 것이다. 이를 통해 애플리케이션을 개발 환경에서 테스트 환경, 그리고 최종 프로덕션 환경으로 손쉽게 이동시킬 수 있으며, 표준화된 포맷 덕분에 다양한 호환 자바 애플리케이션 서버 간의 이동도 용이해진다.

WAR 파일은 웹 애플리케이션을 구성하는 모든 자원을 특정 디렉토리 구조에 따라 하나의 아카이브 파일로 묶은 것이다. 이 구조는 자카르타 EE (이전의 자바 플랫폼, 엔터프라이즈 에디션) 표준에 의해 정의되며, 웹 애플리케이션 서버가 애플리케이션을 인식하고 실행할 수 있도록 한다.
WAR 파일의 루트 디렉토리에는 정적 자원과 설정 파일이 위치한다. HTML, CSS, 자바스크립트 파일 및 이미지 등은 직접 루트 또는 하위 디렉토리에 배치된다. 가장 중요한 설정 파일인 web.xml (배포 서술자)은 반드시 WEB-INF 디렉토리 하위에 존재해야 한다. 이 파일은 서블릿, 필터, 리스너의 매핑 및 애플리케이션 전반적인 설정을 정의한다.
WEB-INF 디렉토리는 웹 애플리케이션의 핵심 구성 요소를 담는 보호된 영역이다. 여기에는 classes 디렉토리(컴파일된 자바 클래스 파일), lib 디렉토리(JAR 파일 형태의 외부 라이브러리), 그리고 앞서 언급한 web.xml 파일이 포함된다. 이 구조 덕분에 개발자는 모든 코드, 리소스, 의존성을 하나의 파일로 패키징하여 톰캣, 제이보스, 웹로직 등의 다양한 웹 애플리케이션 서버에 일관되게 배포할 수 있다.

WAR 파일은 자바 기반 웹 애플리케이션을 배포하기 위해 표준화된 구조로 생성된다. 개발자는 애플리케이션의 모든 구성 요소, 즉 서블릿, JSP 파일, 자바 클래스, HTML, CSS, JavaScript 파일, 그리고 배포 서술자인 web.xml 파일 등을 특정 디렉토리 구조에 맞춰 준비한다. 이후 아파치 앤트나 메이븐, 그레이들과 같은 빌드 도구를 사용하거나, JDK에 포함된 jar 명령어를 활용하여 이 모든 파일들을 하나의 .war 확장자를 가진 압축 파일로 패키징한다. 이 과정은 애플리케이션을 웹 애플리케이션 서버에 효율적으로 전달할 수 있는 형태로 만드는 것이다.
생성된 WAR 파일의 배포는 매우 직관적이다. 대부분의 웹 애플리케이션 서버나 서블릿 컨테이너는 특정 디렉토리(예: 톰캣의 webapps 디렉토리)에 WAR 파일을 복사하기만 하면 자동으로 압축을 해제하고 애플리케이션을 구동한다. 또는 서버의 관리자 콘솔을 통해 파일을 업로드하여 배포할 수도 있다. 이렇게 배포되면 서버는 WAR 파일 내의 web.xml을 읽어 애플리케이션의 설정을 초기화하고, 사용자는 지정된 컨텍스트 경로를 통해 웹 애플리케이션에 접근할 수 있게 된다.
WAR 형식의 핵심 장점은 애플리케이션의 이식성에 있다. 자카르타 EE나 자바 플랫폼, 엔터프라이즈 에디션 표준을 준수하여 생성된 WAR 파일은 특정 서버에 종속되지 않으며, 표준을 지원하는 어떠한 웹 애플리케이션 서버에서도 동일하게 실행될 수 있다는 점이다. 이는 개발 환경과 운영 환경의 차이를 최소화하고, 배포 과정을 단순화하며, 클라우드 컴퓨팅 환경에서의 빠른 스케일링과 관리를 가능하게 하는 기반이 된다.

JAR 파일은 자바 클래스 파일, 리소스, 메타데이터를 하나의 파일로 묶는 기본적인 자바 패키징 형식이다. 주로 독립 실행형 자바 애플리케이션이나 재사용 가능한 라이브러리를 배포하는 데 사용된다. 반면, WAR 파일은 JAR 파일을 기반으로 하지만, 웹 애플리케이션에 특화된 구조를 가진다. WAR 파일 내부에는 서블릿, JSP, HTML, CSS, JavaScript 파일과 함께 웹 애플리케이션의 배치 정보를 담은 web.xml 배포 서술자가 포함된다. 이는 WAR 파일이 웹 애플리케이션 서버나 서블릿 컨테이너에서 실행되도록 설계되었기 때문이다.
EAR 파일은 JAR와 WAR보다 더 큰 범위의 엔터프라이즈 애플리케이션을 패키징한다. 하나의 EAR 파일은 여러 개의 모듈을 포함할 수 있으며, 이 모듈들은 하나 이상의 WAR 파일(웹 모듈), EJB JAR 파일(비즈니스 로직 모듈), 그리고 애플리케이션 클라이언트 JAR 파일로 구성된다. 또한, EAR 파일은 애플리케이션 전체의 설정을 정의하는 application.xml 배포 서술자를 포함한다. 이는 EAR이 자바 플랫폼, 엔터프라이즈 에디션 애플리케이션 서버에 배포되어 여러 모듈이 하나의 통합된 단위로 관리되고 실행되도록 하기 위한 것이다.
요약하면, 세 형식은 패키징의 범위와 목적에서 차이를 보인다. JAR는 기본적인 자바 코드와 라이브러리 패키징에, WAR는 웹 애플리케이션 패키징에, EAR는 웹 모듈과 EJB 모듈 등을 포함하는 복잡한 엔터프라이즈 애플리케이션 패키징에 각각 사용된다. 따라서 WAR는 JAR의 확장 형태로 웹에 특화되었고, EAR는 다시 WAR와 다른 모듈들을 포함할 수 있는 상위 개념의 패키징 형식이다.

WAR 파일은 자바 기반 웹 애플리케이션을 배포할 때 가장 널리 사용되는 표준 포맷이다. 주로 웹 애플리케이션 서버나 서블릿 컨테이너에 배포되어 실행된다. 주요 사용 사례로는 전자상거래 플랫폼, 기업 내부 관리 시스템, 콘텐츠 관리 시스템 등 동적인 웹 서비스를 구축하는 것을 들 수 있다. 이러한 애플리케이션은 HTML, JSP, 서블릿 클래스, 자바 클래스 파일, 라이브러리, 설정 파일 등으로 구성되며, WAR 포맷은 이 모든 구성 요소를 하나의 파일로 압축하여 관리와 전송을 용이하게 한다.
개발과 운영 측면에서 WAR 파일의 사용은 표준화된 배포 프로세스를 가능하게 한다. 개발자는 로컬 환경에서 애플리케이션을 WAR 파일로 패키징한 후, 테스트, 스테이징, 프로덕션과 같은 다양한 서버 환경에 동일한 파일을 배포할 수 있다. 이는 지속적 통합 및 지속적 배포 파이프라인과 잘 통합되어, 빌드 자동화 도구를 통해 WAR 파일을 생성하고 목표 WAS에 자동으로 배포하는 워크플로우를 구성하는 데 핵심적인 역할을 한다.
또한, WAR 파일은 클라우드 컴퓨팅 환경에서 컨테이너 기반 배포의 기초가 되기도 한다. 많은 클라우드 서비스 제공자들은 자바 웹 애플리케이션을 WAR 파일 형태로 업로드하면 자동으로 실행 환경을 구성해 주는 서비스를 제공한다. 이는 개발자가 인프라 관리보다 애플리케이션 코드 자체에 집중할 수 있게 하며, 마이크로서비스 아키텍처에서 개별 서비스를 패키징하고 배포하는 단위로도 활용될 수 있다.
