Quelle est la différence entre un fichier .war et un fichier .ear?
De GeekInterview :
Dans l'application J2EE, les modules sont packagés en tant que EAR, JAR et WAR en fonction de leurs fonctionnalités.
JAR: Les modules EJB contenant les beans Java d'entreprise (fichiers de classe) et le descripteur de déploiement EJB sont compressés sous forme de fichiers JAR avec l'extension .jar.
GUERRE: Les modules Web contenant les fichiers de classe Servlet, les fichiers JSP, les fichiers de support, les fichiers GIF et HTML sont fournis sous forme de fichier JAR avec l'extension .war (web archive).
OREILLE: Tous les fichiers ci-dessus (.jar et .war) sont regroupés dans un fichier JAR avec l'extension .ear (archive d'entreprise) et sont déployés dans Application Server.
Un fichier WAR (Web Archive) est un module chargé dans un conteneur Web d'un serveur d'applications Java. Un Java Application Server possède deux conteneurs (environnements d'exécution): l'un est un conteneur Web et l'autre, un conteneur EJB.
Le conteneur Web héberge des applications Web basées sur JSP ou l'API Servlets - spécialement conçues pour la gestion des demandes Web - donc plus d'un style de requête/réponse du calcul distribué . Un conteneur Web nécessite que le module Web soit présenté sous la forme d'un fichier WAR - qui est un fichier JAR spécial avec un fichier web.xml
dans le fichier WEB-INF
dossier.
Un conteneur EJB héberge des beans Enterprise Java basés sur l'API EJB, conçus pour fournir des fonctionnalités métier étendues telles que des transactions déclaratives, un niveau de méthode déclarative. support multiprotocole et de sécurité - donc plus d’un style RPC de l’informatique distribuée . Les conteneurs EJB exigent que les modules EJB soient empaquetés sous la forme de fichiers JAR . Ils contiennent un fichier ejb-jar.xml
dans le dossier META-INF
.
Les applications d'entreprise peuvent être composées d'un ou de plusieurs modules pouvant être des modules Web (conditionnés sous forme de fichier WAR), des modules EJB (conditionnés sous forme de fichier JAR). , ou les deux. Les applications d'entreprise sont présentées sous forme de fichiers EAR . Il s'agit de fichiers JAR spéciaux contenant un fichier application.xml
dans le dossier META-INF
.
Fondamentalement, Les fichiers EAR sont un sur-ensemble contenant des fichiers WAR et des fichiers JAR. . Java Les serveurs d'applications permettent le déploiement de modules Web autonomes dans un fichier WAR, bien qu'en interne, ils créent des fichiers EAR en guise de wrapper autour de fichiers WAR. Les conteneurs Web autonomes tels que Tomcat et Jetty ne prennent pas en charge les fichiers EAR. Ce ne sont pas des serveurs d'applications à part entière. Les applications Web de ces conteneurs doivent être déployées sous forme de fichiers WAR uniquement.
Dans les serveurs d'applications, les fichiers EAR contiennent des configurations telles que le mappage du rôle de sécurité de l'application, le mappage de référence EJB et le mappage d'URL de racine de contexte des modules Web.
Outre les modules Web et les modules EJB, les fichiers EAR peuvent également contenir des modules de connecteur conditionnés sous forme de fichiers RAR et des modules client sous forme de fichiers JAR.
guerre - archives web. Il est utilisé pour déployer des applications Web conformément au standard de servlet. Il s'agit d'un fichier jar contenant un répertoire spécial appelé WEB-INF et plusieurs fichiers et répertoires (web.xml, lib, classes), ainsi que l'ensemble des ressources HTML, JSP, images, CSS, JavaScript et autres de l'application Web
ear - archive d'entreprise. Il est utilisé pour déployer une application d'entreprise contenant des EJB, des applications Web et des bibliothèques tierces. Il s’agit également d’un fichier jar. Il contient un répertoire spécial appelé APP-INF contenant le fichier application.xml, ainsi que des fichiers jar et war.
Les fichiers WAR (archives Web) contiennent des fichiers de classe de servlet, des JSP (pages de servlet Java), des fichiers HTML et graphiques, ainsi que d'autres fichiers de support.
Les fichiers EAR (archive d'entreprise) contiennent les fichiers WAR ainsi que les fichiers JAR contenant du code.
Il y a peut-être d'autres éléments dans ces fichiers, mais leur signification principale est: WAR pour les éléments de type Web, EAR pour les éléments de type entreprise (WAR, code, connecteurs, etc.).
Voir: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar (archives sur bande) - Le format utilisé est un fichier écrit en unités série de FileName, fileSize, fileData - pas de compression. peut être énorme
Jar (archive Java) - techniques de compression utilisées - contient généralement des informations Java telles que des fichiers de classe/Java. Mais peut contenir n’importe quel fichier ou structure de répertoire
war (archives d'applications Web) - similaires, les fichiers jar n'ont qu'une structure de répertoires spécifique selon les spécifications JSP/Servlet à des fins de déploiement
ear (archives d’entreprise) - similaires aux fichiers jar. avoir une structure de répertoire conforme aux exigences J2EE pour pouvoir être déployé sur des serveurs d'applications J2EE .- peut contenir plusieurs fichiers JAR et WAR
Fichiers JAR
Un fichier JAR (abréviation de Java Archive) permet de combiner plusieurs fichiers En un seul. Fichiers avec le '.jar'; Les développeurs de logiciels utilisent les extensions pour distribuer les classes Java et diverses métadonnées . Elles contiennent également des bibliothèques et des fichiers de ressources, ainsi que des fichiers accessoires.
Les utilisateurs peuvent extraire et créer des fichiers JAR à l'aide de la commande '.jar' (JDK) de Java Development Kit. Les outils Zip peuvent également être utilisés.
Les fichiers JAR ont des fichiers manifest facultatifs. Les entrées du fichier manifeste Prescrivent l'utilisation du fichier JAR. Une spécification de classe 'main' pour une classe de fichier Désigne le fichier en tant que programme détaché ou 'autonome'.
Fichiers WAR
Un fichier WAR (ou une application Web) peut comprendre des fichiers XML (Langage de balisage extensible), des classes Java ainsi que des pages Java Server À des fins d'application Internet. Il est également utilisé pour marquer Les bibliothèques et les pages Web qui constituent une application Web. Les fichiers portant l’extension «.War» contiennent l’application Web à utiliser avec les conteneurs server ou JSP (Java Server Page). Il a JSP, HTML (Hypertext Markup Langage), JavaScript et divers fichiers pour créer les applications Web Susmentionnées.
Un fichier WAR est structuré en tant que tel pour permettre des répertoires spéciaux et des fichiers Il peut également avoir une signature numérique (très semblable à celle d’un fichier JAR) Pour montrer la véracité du code.
Fichiers EAR
Un fichier EAR (Enterprise Archive) fusionne les fichiers JAR et WAR dans une archive unique Ces fichiers avec l’extension '.ear' ont un répertoire pour Métadonnées. Les modules sont regroupés dans des archives pour permettre un fonctionnement fluide et simultané des différents modules dans un serveur d'applications.
Le fichier EAR comporte également des descripteurs de déploiement (qui sont des fichiers XML) Qui dictent effectivement le déploiement des différents modules.
Les fichiers Ear offrent plus d'options pour configurer l'interaction avec le serveur d'applications.
Par exemple, si la version en veille prolongée du serveur d'applications est plus ancienne que celle fournie par vos dépendances, vous pouvez ajouter ce qui suit à ear-deployer-jboss-beans.xml pour que JBOSS isole les chargeurs de classe et évite les conflits:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
ou à 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>
Cela garantira qu'il n'y a pas de conflit de chargeur de classe entre votre application et le serveur d'applications.
Normalement, le mécanisme de chargeur de classe fonctionne comme suit:
Lorsqu'une demande de chargement de classe est présentée à un chargeur de classes, ce dernier commence par demande à son chargeur de classe parent de répondre à la demande. Le parent, en turn, demande à sa classe parente jusqu'à ce que la demande atteigne le sommet de la hiérarchie. Si le chargeur de classe en haut de la hiérarchie ne peut pas répondre à la demande, le chargeur de classe enfant l’a appelée est responsable du chargement de la classe.
En isolant les chargeurs de classe, votre chargeur de classe ear ne cherchera pas dans le parent (= JBoss/autre chargeur de classe AS) ..__ Pour autant que je sache, cela n’est pas possible avec les fichiers war.
J2EE définit trois types d'archives:
Archives Java (JAR) Un fichier JAR encapsule une ou plusieurs classes Java, un manifeste et un descripteur. Les fichiers JAR représentent le niveau d'archivage le plus bas. Les fichiers JAR sont utilisés dans J2EE pour conditionner les EJB et les applications Java côté client.
Les archives Web (WAR) Les fichiers WAR sont similaires aux fichiers JAR, à la différence près qu’ils sont spécifiquement conçus pour les applications Web créées à partir de servlets, de JSP et de classes de support.
Enterprise Archives (EAR) ”Un fichier EAR contient tous les composants constituant une application J2EE particulière.
Pour rendre le transport de projet facile, le déploiement est facilité. Il est nécessaire de compresser dans un seul fichier.
WAR (archive Web) - chaque guerre représente une application Web - utilisez uniquement des technologies Web telles que servlet, jsps peut être utilisé . - peut fonctionner sur le serveur Tomcat - application Web développée par les technologies Web uniquement. jsp servlet html js - info représentation seulement pas de transactions.
EAR (archive d'entreprise) - chaque guerre représente une application d'entreprise - nous pouvons utiliser n'importe quoi de j2ee comme ejb, jms peut être utilisé avec joie . - peut fonctionner sur Glassfish comme serveur pas sur Tomcat . - application d'entreprise développée par n'importe quelle technologie, que ce soit de la part de j2ee ou de tout le Web app plus ejbs jms etc. - effectue des transactions avec représentation d'informations. par exemple. Application bancaire, application télécom