Was ist der Unterschied zwischen einer .war- und einer .ear-Datei?
Was ist der Unterschied zwischen einer .war- und einer .ear-Datei?
Antworten:
Von GeekInterview :
In der J2EE-Anwendung werden Module basierend auf ihrer Funktionalität als EAR, JAR und WAR gepackt
JAR: EJB-Module, die Enterprise-Java-Beans (Klassendateien) und den EJB-Bereitstellungsdeskriptor enthalten, werden als JAR-Dateien mit der Erweiterung .jar gepackt
WAR: Webmodule, die Servlet-Klassendateien, JSP-Dateien, unterstützende Dateien, GIF- und HTML-Dateien enthalten, werden als JAR-Datei mit der Erweiterung .war (Webarchiv) gepackt
EAR: Alle oben genannten Dateien (.jar und .war) werden als JAR-Datei mit der Erweiterung .ear (Unternehmensarchiv) gepackt und auf Application Server bereitgestellt.
Ein WAR (Web Archive) ist ein Modul, das in einen Webcontainer eines Java Application Server geladen wird . Ein Java Application Server verfügt über zwei Container (Laufzeitumgebungen) - einer ist ein Webcontainer und der andere ist ein EJB-Container.
Der Webcontainer hostet Webanwendungen, die auf JSP oder der Servlets-API basieren und speziell für die Bearbeitung von Webanfragen entwickelt wurden . Für einen Webcontainer muss das Webmodul als WAR-Datei gepackt sein - das ist eine spezielle JAR-Datei mit einer web.xml
Datei im WEB-INF
Ordner.
In einem EJB-Container werden Enterprise-Java-Beans gehostet, die auf der EJB-API basieren und erweiterte Geschäftsfunktionen wie deklarative Transaktionen, Sicherheit auf deklarativer Methodenebene und Multiprotokollunterstützung bieten - also eher ein RPC-Stil für verteiltes Computing . Für EJB-Container müssen EJB-Module als JAR-Dateien gepackt werden. Diese enthalten eine ejb-jar.xml
Datei im META-INF
Ordner.
Unternehmensanwendungen können aus einem oder mehreren Modulen bestehen, die entweder Webmodule (als WAR-Datei gepackt), EJB-Module (als JAR-Datei verpackt) oder beide sein können. Unternehmensanwendungen werden als EAR-Dateien gepackt. Hierbei handelt es sich um spezielle JAR-Dateien, die eine application.xml
Datei im META-INF
Ordner enthalten.
Grundsätzlich sind EAR-Dateien eine Obermenge, die WAR-Dateien und JAR-Dateien enthält . Java Application Server ermöglichen die Bereitstellung eigenständiger Webmodule in einer WAR-Datei. Intern erstellen sie jedoch EAR-Dateien als Wrapper für WAR-Dateien. Standalone-Webcontainer wie Tomcat und Jetty unterstützen keine EAR-Dateien - dies sind keine vollwertigen Anwendungsserver. Webanwendungen in diesen Containern dürfen nur als WAR-Dateien bereitgestellt werden.
Auf Anwendungsservern enthalten EAR-Dateien Konfigurationen wie die Zuordnung von Anwendungssicherheitsrollen, die EJB-Referenzzuordnung und die Kontextstamm-URL-Zuordnung von Webmodulen.
Neben Webmodulen und EJB-Modulen können EAR-Dateien auch Connector-Module enthalten, die als RAR-Dateien und Client-Module als JAR-Dateien gepackt sind.
.jar
, .war
und .ear
Dateien sind einfache Zip - Archive, damit in der Lage von jedem Programm geöffnet werden , die gewöhnlichen ZIP - Dateien verarbeiten kann.
Kriegs - Webarchiv. Es wird zum Bereitstellen von Webanwendungen gemäß dem Servlet-Standard verwendet. Es handelt sich um eine JAR-Datei, die ein spezielles Verzeichnis namens WEB-INF und mehrere darin enthaltene Dateien und Verzeichnisse (web.xml, lib, classes) sowie alle HTML-, JSP-, Bild-, CSS-, JavaScript- und anderen Ressourcen der Webanwendung enthält
Ohr - Unternehmensarchiv. Es wird zum Bereitstellen von Unternehmensanwendungen verwendet, die EJBs, Webanwendungen und Bibliotheken von Drittanbietern enthalten. Es ist auch eine JAR-Datei, es hat ein spezielles Verzeichnis namens APP-INF, das die Datei application.xml enthält, und es enthält JAR- und War-Dateien.
WAR-Dateien (Webarchivdateien) enthalten Servlet-Klassendateien, JSPs (Java-Servlet-Seiten), HTML- und Grafikdateien sowie andere unterstützende Dateien.
EAR-Dateien (Enterprise Archive) enthalten die WAR-Dateien zusammen mit den JAR-Dateien, die Code enthalten.
Es mag andere Dinge in diesen Dateien geben, aber sie sind im Grunde genommen für das gedacht, wie sie klingen: WAR für Sachen vom Typ Web, EAR für Sachen vom Typ Enterprise (WARs, Code, Konnektoren usw.).
JAR-Dateien
Eine JAR-Datei (kurz für Java Archive) ermöglicht die Kombination mehrerer Dateien zu einer einzigen. Dateien mit der '.jar'; Erweiterungen werden von Softwareentwicklern verwendet, um Java-Klassen und verschiedene Metadaten zu verteilen. Diese enthalten auch Bibliotheken und Ressourcendateien sowie Zubehördateien (z. B. Eigenschaftendateien).
Benutzer können JAR-Dateien mit dem Befehl '.jar' des Java Development Kit (JDK) extrahieren und erstellen. Es können auch ZIP-Tools verwendet werden.
JAR-Dateien haben optionale Manifestdateien. Einträge in der Manifestdatei schreiben die Verwendung der JAR-Datei vor. Eine 'Haupt'-Klassenspezifikation für eine Dateiklasse bezeichnet die Datei als getrenntes oder' eigenständiges 'Programm.
WAR-Dateien
WAR-Dateien (oder Webanwendungsarchivdateien) können XML-Dateien (Extensible Markup Language), Java-Klassen sowie Java Server-Seiten für Zwecke der Internetanwendung umfassen. Es wird auch verwendet, um Bibliotheken und Webseiten zu markieren, aus denen eine Webanwendung besteht. Dateien mit der Erweiterung '.war' enthalten die Webanwendung zur Verwendung mit Server- oder JSP-Containern (Java Server Page). Es verfügt über JSP, HTML (Hypertext Markup Language), JavaScript und verschiedene Dateien zum Erstellen der oben genannten Web-Apps.
Eine WAR-Datei ist so strukturiert, dass spezielle Verzeichnisse und Dateien möglich sind. Es kann auch eine digitale Signatur haben (ähnlich der einer JAR-Datei), um die Richtigkeit des Codes anzuzeigen.
EAR-Dateien
Eine EAR-Datei (Enterprise Archive) führt JAR- und WAR-Dateien zu einem einzigen Archiv zusammen. Diese Dateien mit der Erweiterung '.ear' haben ein Verzeichnis für Metadaten. Die Module werden in ein Archiv gepackt, um einen reibungslosen und gleichzeitigen Betrieb der verschiedenen Module innerhalb eines App-Servers zu gewährleisten.
Die EAR-Datei enthält auch Bereitstellungsdeskriptoren (XML-Dateien), die die Bereitstellung der verschiedenen Module effektiv vorschreiben.
Siehe: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar (Bandarchive) - Das verwendete Format ist eine Datei, die in seriellen Einheiten von Dateiname, Dateigröße, Dateidaten geschrieben ist - keine Komprimierung. kann riesig sein
Jar (Java-Archiv) - verwendete Komprimierungstechniken - enthält im Allgemeinen Java-Informationen wie Klassen- / Java-Dateien. Kann aber beliebige Dateien und Verzeichnisstrukturen enthalten
war (Webanwendungsarchive) - ähnlich wie JAR-Dateien haben sie nur eine bestimmte Verzeichnisstruktur gemäß JSP / Servlet-Spezifikation für Bereitstellungszwecke
ear (Unternehmensarchive) - ähnlich wie JAR-Dateien. Die Verzeichnisstruktur entspricht den J2EE-Anforderungen, sodass sie auf J2EE-Anwendungsservern bereitgestellt werden kann. - kann mehrere JAR- und WAR-Dateien enthalten
Ear-Dateien bieten weitere Optionen zum Konfigurieren der Interaktion mit dem Anwendungsserver.
Beispiel: Wenn die Ruhezustandsversion des Anwendungsservers älter ist als die von Ihren Abhängigkeiten bereitgestellte, können Sie ear-deployer-jboss-beans.xml für JBOSS Folgendes hinzufügen, um Klassenladeprogramme zu isolieren und Konflikte zu vermeiden:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
oder zu 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>
Dadurch wird sichergestellt, dass zwischen Ihrer Anwendung und dem Anwendungsserver kein Klassenladekonflikt besteht.
Normalerweise funktioniert der Classloader-Mechanismus folgendermaßen:
Wenn eine Klassenladeanforderung einem Klassenladeprogramm präsentiert wird, fordert es zuerst seinen übergeordneten Klassenladeprogramm auf, die Anforderung zu erfüllen. Das übergeordnete Element fragt sein übergeordnetes Element nach der Klasse, bis die Anforderung den oberen Rand der Hierarchie erreicht. Wenn der Klassenlader oben in der Hierarchie die Anforderung nicht erfüllen kann, ist der untergeordnete Klassenlader, der ihn aufgerufen hat, für das Laden der Klasse verantwortlich.
Durch das Isolieren der Klassenlader sieht Ihr Ohrklassenlader nicht im übergeordneten (= JBoss / anderer AS-Klassenlader) aus. Soweit ich weiß, ist dies mit Kriegsakten nicht möglich.
J2EE definiert drei Arten von Archiven:
Java-Archive (JAR) Eine JAR-Datei enthält eine oder mehrere Java-Klassen, ein Manifest und einen Deskriptor. JAR-Dateien sind die unterste Archivierungsstufe. JAR-Dateien werden in J2EE zum Packen von EJBs und clientseitigen Java-Anwendungen verwendet.
WAR-Dateien für Webarchive (WAR) ähneln JAR-Dateien, sind jedoch speziell für Webanwendungen vorgesehen, die aus Servlets, JSPs und unterstützenden Klassen bestehen.
Enterprise Archives (EAR) “Eine EAR-Datei enthält alle Komponenten, aus denen eine bestimmte J2EE-Anwendung besteht.
Um den Projekttransport zu vereinfachen, wurde die Bereitstellung vereinfacht. müssen in eine Datei komprimiert werden. JAR-Gruppe (Java-Archiv) von .class-Dateien
WAR (Webarchiv) - jeder Krieg stellt eine Webanwendung dar - es können nur webbezogene Technologien wie Servlet und JSP verwendet werden. - kann auf Tomcat-Server ausgeführt werden - Web-App nur von webbezogenen Technologien entwickelt jsp servlet html js - Info-Darstellung nur keine Transaktionen.
EAR (Enterprise Archive) - jedes Ohr repräsentiert eine Unternehmensanwendung - wir können alles von j2ee wie ejb verwenden, jms kann gerne verwendet werden. - Kann auf einem Glassfish-ähnlichen Server ausgeführt werden, nicht auf einem Tomcat-Server. - Unternehmens-App, die von jeder Technologie von j2ee entwickelt wurde, wie alle Web-Apps plus ejbs jms usw. - führt Transaktionen mit Info-Darstellung durch. z.B. Bank App, Telekom App
.JAR, .WAR and .EAR
erfahren, können Sie auch ein Video-Tutorial sehen. Es ist sehr einfach oder verständlicher. Es wird erklärt, was der Unterschied zwischen .JAR, .WAR und .EAR Video Tutorial ist : Unterschied zwischen .JAR, .WAR und .EAR