.war 대 .ear 파일


566

.war 파일과 .ear 파일의 차이점은 무엇입니까?


2
에 대한 자세한 이해하기 위해, .JAR, .WAR and .EAR당신은 또한 비디오 자습서를 볼 수 있습니다. 매우 간단하거나 이해하기 쉽습니다. 그것은 무엇인지 설명 할 것입니다 차이 사이 .JAR, .WAR.EAR 비디오 자습서 : .JAR, .WAR와 .EAR의 차이점
바르 티 Rawat

2
확장명이 .zip 인 zip 파일을 남겨 두는 것이 기업 전체가 아니라고 생각한 Java 세계에 오신 것을 환영합니다. 따라서 최종적으로 이동하는 위치에 따라 이름을 .jar / .ear 또는 .war로 바꿔야합니다.
pistacchio

답변:


492

에서 GeekInterview :

J2EE 애플리케이션에서 모듈은 기능에 따라 EAR, JAR 및 WAR로 패키지됩니다.

JAR : 엔터프라이즈 Java Bean (클래스 파일) 및 EJB 배치 디스크립터가 포함 된 EJB 모듈은 확장자가 .jar 인 JAR 파일로 압축됩니다.

WAR : 서블릿 클래스 파일, JSP 파일, 지원 파일, GIF 및 HTML 파일을 포함하는 웹 모듈은 확장자가 .war (웹 아카이브) 인 JAR 파일로 패키지됩니다.

EAR : 위의 모든 파일 (.jar 및 .war)은 확장자가 .ear (enterprise archive) 인 JAR 파일로 패키지되어 Application Server에 배치됩니다.


63
이 게시물은 EAR이 큰 EAR에서 JARS와 WARS 둘 다라고 생각합니다. 그렇게 간단하지는 않습니다.
Lay González

4
본질적으로 Archive (JAR)이지만 특성 / 내용을 암시하기 위해 다른 확장명을 갖습니다.
KNU

1
대부분의 경우 Bean에 대한 EAR 및 별도의 JAR은 필요하지 않습니다. 하나의 아카이브에 모든 클래스가있는 단순한 WAR이 정상입니다. 보다 자세한 설명은 다음과 같습니다. adam-bien.com/roller/abien/entry/ears_wars_and_size_matters
Kaspars Rinkevics 2007 년

599

WAR (웹 아카이브) 에로드되는 모듈입니다 웹 컨테이너 (A)의 자바 애플리케이션 서버 . Java Application Server에는 두 개의 컨테이너 (런타임 환경)가 있습니다. 하나는 웹 컨테이너이고 다른 하나는 EJB 컨테이너입니다.

웹 컨테이너 JSP 나 서블릿 API를 기반으로 호스트 웹 응용 프로그램 - 웹 요청 처리를 위해 특별히 설계된 - 그래서 더의 분산 컴퓨팅의 요청 / 응답 스타일 . 웹 컨테이너를 사용하려면 웹 모듈을 WAR 파일 로 패키지 web.xml해야 WEB-INF합니다. 이는 폴더 에 파일이있는 특수 JAR 파일입니다 .

EJB 컨테이너 같은 선언적인 트랜잭션 선언적 방법 레벨 보안과 멀티 프로토콜 지원으로 확장 된 비즈니스 기능을 제공하도록 설계된 EJB API를 기반으로 호스트 엔터프라이즈 자바 빈 - 그래서 더의 의 RPC 스타일은 분산 컴퓨팅 . EJB 컨테이너에는 EJB 모듈을 JAR 파일 로 패키지해야 합니다. 해야 합니다. 폴더에 ejb-jar.xml파일 이 있습니다 META-INF.

엔터프라이즈 응용 프로그램 은 웹 모듈 (WAR 파일로 패키지), EJB 모듈 (JAR 파일로 패키지) 또는 둘 다일 수있는 하나 이상의 모듈로 구성 될 수 있습니다. 엔터프라이즈 응용 프로그램은 EAR 파일 로 패키지되어 있습니다 .이 application.xml파일은 META-INF폴더 에 파일이 들어있는 특수 JAR 파일 입니다.

기본적으로 EAR 파일WAR 파일JAR 파일이 포함 된 수퍼 세트 입니다. Java Application Server를 사용하면 WAR 파일에 독립형 웹 모듈을 배치 할 수 있지만 내부적으로 WAR 파일을 둘러싸는 랩퍼로 EAR 파일을 작성합니다. 다음과 같은 독립형 웹 컨테이너TomcatJetty 는 EAR 파일을 지원하지 않습니다. 이는 완전한 Application Server가 아닙니다. 이 컨테이너의 웹 응용 프로그램은 WAR 파일로만 배포해야합니다.

애플리케이션 서버에서 EAR 파일에는 애플리케이션 보안 역할 맵핑, EJB 참조 맵핑 및 웹 모듈의 컨텍스트 루트 URL 맵핑과 같은 구성이 포함됩니다.

웹 모듈 및 EJB 모듈 외에도 EAR 파일에는 RAR 파일로 패키지 된 커넥터 모듈과 JAR 파일로 패키지 된 클라이언트 모듈이 포함될 수 있습니다.


32
이 답변은 왜 하나를 사용하고 싶을 지 설명하기 때문에 +1입니다.
Jason Wheeler

7
@KNU 예, .jar, .war.ear파일은 간단한 우편 아카이브는, 보통의 .zip 파일을 처리 할 수있는 모든 프로그램에서 열 수 따라서 수 있습니다.
acdcjunior

41

전쟁-웹 아카이브. 서블릿 표준에 따라 웹 애플리케이션을 배치하는 데 사용됩니다. WEB-INF라는 특수 디렉토리와 그 안에 여러 파일과 디렉토리 (web.xml, lib, 클래스)와 모든 HTML, JSP, 이미지, CSS, JavaScript 및 웹 응용 프로그램의 기타 리소스를 포함하는 jar 파일입니다.

귀-기업 아카이브. EJB, 웹 응용 프로그램 및 타사 라이브러리가 포함 된 엔터프라이즈 응용 프로그램을 배포하는 데 사용됩니다. 또한 jar 파일이며 application.xml 파일을 포함하는 APP-INF라는 특수 디렉토리가 있으며 jar 및 war 파일이 포함되어 있습니다.


APP-INF 디렉토리 대신 META-INF을 의미 했습니까?
Zavael

26

WAR (웹 아카이브) 파일에는 서블릿 클래스 파일, JSP (Java 서블릿 페이지), HTML 및 그래픽 파일 및 기타 지원 파일이 포함됩니다.

EAR (엔터프라이즈 아카이브) 파일에는 코드가 포함 된 JAR 파일과 함께 WAR 파일이 포함됩니다.

이러한 파일에는 다른 것들이있을 수 있지만 기본적으로 웹 유형의 경우 WAR, 엔터프라이즈 유형의 경우 EAR (WAR, 코드, 커넥터 등)과 같은 의미를 갖습니다.


2
필자의 경우 항상 WEB-INF / lib 폴더에 jar가있는 WAR을 배포하면 작동합니다. EAR 아카이브를 사용해야하는 이유는 무엇입니까?
swapyonubuntu

2
@swapyonubuntu, 단일 웹 응용 프로그램 (특히 단일 서블릿 컨텍스트)을 배포하는 경우 WAR 파일을 수행하는 데 아무런 문제가 없습니다. EAR 파일은 많은 웹 응용 프로그램이있는 응용 프로그램을 포함하여 완전히 날아간 엔터프라이즈 응용 프로그램에 더 좋습니다.
paxdiablo 2019

1
이 마이크로 서비스 시대에 각 WAR을 완전히 분리하여 모 놀리 식 EAR로 묶는 대신 개별적으로 배포하는 것이 더 합리적이지 않습니까?
Sayo Oladeji

18

JAR 파일

JAR (Java Archive의 약자) 파일을 사용하면 여러 파일을 하나의 파일로 조합 할 수 있습니다. '.jar'이있는 파일; 확장은 소프트웨어 개발자가 Java 클래스 및 다양한 메타 데이터를 배포하는 데 사용됩니다. 여기에는 라이브러리 및 리소스 파일과 액세서리 파일 (예 : 속성 파일)이 있습니다.

사용자는 JDK (Java Development Kit) '.jar'명령으로 JAR 파일을 추출하고 작성할 수 있습니다. ZIP 도구도 사용할 수 있습니다.

JAR 파일에는 선택적 매니페스트 파일이 있습니다. 매니페스트 파일 내의 항목은 JAR 파일의 사용을 규정합니다. 파일 클래스의 '주'클래스 스펙은 파일을 분리 또는 '독립형'프로그램으로 나타냅니다.

WAR 파일

WAR (또는 웹 애플리케이션 아카이브) 파일은 인터넷 애플리케이션의 목적으로 Java 서버 페이지뿐만 아니라 XML (확장 가능 마크 업 언어) 파일, Java 클래스로 구성 될 수 있습니다. 또한 웹 응용 프로그램을 구성하는 라이브러리 및 웹 페이지를 표시하는 데 사용됩니다. 확장자가 '.war'인 파일에는 서버 또는 JSP (Java Server Page) 컨테이너와 함께 사용할 웹 앱이 포함되어 있습니다. JSP, HTML (Hypertext Markup Language), JavaScript 및 위에서 언급 한 웹 앱을 만들기위한 다양한 파일이 있습니다.

WAR 파일은 특수한 디렉토리와 파일을 허용하도록 구성되어 있습니다. 또한 코드의 정확성을 보여주기 위해 JAR 파일의 서명과 같은 디지털 서명을 가질 수 있습니다.

EAR 파일

EAR (Enterprise Archive) 파일은 JAR 및 WAR 파일을 단일 아카이브로 병합합니다. 확장자가 '.ear'인 이러한 파일에는 메타 데이터 용 디렉토리가 있습니다. 모듈은 앱 서버 내에서 서로 다른 모듈을 원활하고 동시에 작동 할 수 있도록 아카이브에 패키지로 제공됩니다.

EAR 파일에는 다른 모듈의 배치를 효과적으로 지시하는 배치 디스크립터 (XML 파일)가 있습니다.

여기에 이미지 설명을 입력하십시오


1
훌륭한 그래픽을위한 최고의 답변이어야합니다. 감사합니다.
fl0w

12

참조 : http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html

tar (테이프 아카이브)-사용 된 형식은 fileName, fileSize, fileData의 직렬 단위로 작성된 파일입니다. 압축은 없습니다. 거대하다

Jar (Java Archive)-사용 된 압축 기술-일반적으로 클래스 / Java 파일과 같은 Java 정보가 포함됩니다. 그러나 모든 파일과 디렉토리 구조를 포함 할 수 있습니다

war (웹 애플리케이션 아카이브)-jar 파일과 유사하게 배치 목적으로 JSP / Servlet 스펙에 따라 특정 디렉토리 구조 만 갖습니다.

귀 (기업 아카이브)-jar 파일과 유사합니다. J2EE 애플리케이션 서버에 배치 될 수 있도록 J2EE 요구 사항을 따르는 디렉토리 구조를 갖습니다. -여러 JAR 및 WAR 파일을 포함 할 수 있습니다


6

ear 파일은 애플리케이션 서버와의 상호 작용을 구성하기위한 추가 옵션을 제공합니다.

예를 들어, 최대 절전 모드 버전의 응용 프로그램 서버가 종속성에서 제공하는 버전보다 오래된 경우 JBOSS가 클래스 로더를 분리하고 충돌을 피하기 위해 ear-deployer-jboss-beans.xml에 다음을 추가 할 수 있습니다.

<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">    
  <property name="isolated">true</property>
</bean>

또는 src / main / application / META-INF / jboss-app.xml :

<?xml version="1.0"?>
<jboss-app>
<loader-repository>
    loader=nameofyourear.ear
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</jboss-app> 

이렇게하면 응용 프로그램과 응용 프로그램 서버간에 클래스 로더 충돌이 없는지 확인할 수 있습니다.

일반적으로 클래스 로더 메커니즘은 다음과 같이 작동합니다.

클래스 로딩 요청이 클래스 로더에 제시되면, 먼저 부모 클래스 로더에게 요청을 수행하도록 요청합니다. 그러면 부모는 요청이 계층의 최상위에 도달 할 때까지 부모에게 클래스를 요청합니다. 계층 구조 맨 위에있는 클래스 로더가 요청을 이행 할 수없는 경우이를 호출 한 하위 클래스 로더가 클래스를로드해야합니다.

클래스 로더를 분리하면 귀 클래스 로더가 부모를 찾지 않습니다 (= JBoss / 기타 AS 클래스 로더). 내가 아는 한, 이것은 전쟁 파일로는 불가능합니다.


KNU :이 응답 파일은 허용 된 답변에 명시된 "서블릿 클래스 파일, JSP 파일, 지원 파일, GIF 및 HTML 파일을 포함하고 있기 때문에"를 사용하는 것보다 더 유효합니다. 전쟁 파일에는 gif, html, jsp, servlet 등이 포함될 수 있습니다. 모든 사람이 "강제로 대답"하면 아마도 우리 모두가 현명한 문제에 더 현명해질 수 있습니다.
Mark

메이븐은 당신을 위해 그것을하지 않습니까? 버전별로 종속성을 지정할 수 있으며 / lib 폴더에 포함됩니다. (전쟁 파일에서)
Sebas

예, 그러나 응용 프로그램 서버 / 서블릿 컨테이너는 자신의 lib 폴더에 제공하는 lib로 lib 폴더의 이들을 재정의하도록 선택할 수 있습니다. 이를 방지 할 수 있습니다. 그것은 모두 사용 된 클래스 로딩 메커니즘에 달려 있습니다.
Mark

6

J2EE는 세 가지 유형의 아카이브를 정의합니다.

  1. JAR (Java Archives) JAR 파일은 하나 이상의 Java 클래스, 매니페스트 및 설명자를 캡슐화합니다. JAR 파일은 가장 낮은 수준의 아카이브입니다. JAR 파일은 J2EE에서 EJB 및 클라이언트 측 Java 응용 프로그램 패키징에 사용됩니다.

  2. WAR (Web Archives) WAR 파일은 서블릿, JSP 및 지원 클래스로 작성된 웹 애플리케이션 용이라는 점을 제외하면 JAR 파일과 유사합니다.

  3. EAR (Enterprise Archives) EAR 파일에는 특정 J2EE 응용 프로그램을 구성하는 모든 구성 요소가 포함되어 있습니다.


0

프로젝트 전송을 위해 배포가 쉬워졌습니다. 하나의 파일로 압축해야합니다. .class 파일의 JAR (Java 아카이브) 그룹

WAR (웹 아카이브)-각 전쟁은 하나의 웹 애플리케이션을 나타냅니다. 서블릿과 같은 웹 관련 기술 만 사용하면 jsp를 사용할 수 있습니다. -Tomcat 서버에서 실행할 수 있습니다-웹 관련 기술로 개발 된 웹 응용 프로그램 만 jsp 서블릿 html js-정보 표시 만 트랜잭션이 없습니다.

EAR (엔터프라이즈 아카이브)-각 귀는 하나의 엔터프라이즈 애플리케이션을 나타냅니다. ejb와 같은 j2ee의 모든 항목을 사용할 수 있으며 jms를 행복하게 사용할 수 있습니다. -Tomcat 서버가 아닌 서버와 같은 Glassfish에서 실행할 수 있습니다. -모든 웹 응용 프로그램과 ejbs jms 등과 같은 j2ee의 모든 기술로 개발 된 엔터프라이즈 응용 프로그램-정보 표현으로 트랜잭션을 수행합니다. 예. 은행 앱, 텔레콤 앱

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.