[java] .war 대 .ear 파일

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



답변

에서 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에 배치됩니다.


답변

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 파일로 패키지 된 클라이언트 모듈이 포함될 수 있습니다.


답변

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

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


답변

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

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

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


답변

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 파일)가 있습니다.

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


답변

참조 : 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 파일을 포함 할 수 있습니다


답변

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 클래스 로더). 내가 아는 한, 이것은 전쟁 파일로는 불가능합니다.