Qual è la differenza tra un file .war e .ear?
Qual è la differenza tra un file .war e .ear?
Risposte:
Da GeekInterview :
Nell'applicazione J2EE, i moduli sono impacchettati come EAR, JAR e WAR in base alla loro funzionalità
JAR: i moduli EJB che contengono java bean enterprise (file di classe) e il descrittore di distribuzione EJB sono compressi come file JAR con estensione .jar
WAR: I moduli Web che contengono file di classe Servlet, file JSP, file di supporto, file GIF e HTML sono impacchettati come file JAR con estensione .war (archivio web)
EAR: tutti i file sopra (.jar e .war) sono impacchettati come file JAR con estensione .ear (archivio aziendale) e distribuiti in Application Server.
Un WAR (Web Archive) è un modulo che viene caricato in un contenitore Web di un Java Application Server . Un Java Application Server ha due contenitori (ambienti di runtime): uno è un contenitore Web e l'altro è un contenitore EJB.
Il contenitore Web ospita applicazioni Web basate su JSP o l'API Servlet - progettata specificamente per la gestione delle richieste Web - quindi più di uno stile di richiesta / risposta di elaborazione distribuita . Un contenitore Web richiede che il modulo Web sia impacchettato come file WAR , ovvero un file JAR speciale con un web.xml
file nella WEB-INF
cartella.
Un contenitore EJB ospita bean Java Enterprise basati sull'API EJB progettata per fornire funzionalità aziendali estese come transazioni dichiarative, sicurezza a livello di metodo dichiarativo e supporto multiprotocollo, quindi più di uno stile RPC di elaborazione distribuita . I contenitori EJB richiedono che i moduli EJB siano impacchettati come file JAR : questi hanno un ejb-jar.xml
file nella META-INF
cartella.
Le applicazioni aziendali possono essere costituite da uno o più moduli che possono essere moduli Web (impacchettati come file WAR), moduli EJB (impacchettati come file JAR) o entrambi. Le applicazioni aziendali sono impacchettate come file EAR : si tratta di file JAR speciali contenenti un application.xml
file nella META-INF
cartella.
Fondamentalmente, i file EAR sono un superset contenente file WAR e file JAR . Java Application Server consente la distribuzione di moduli Web autonomi in un file WAR, sebbene internamente creino file EAR come wrapper per i file WAR. I contenitori Web autonomi come Tomcat e Jetty non supportano i file EAR: non si tratta di server delle applicazioni completi. Le applicazioni Web in questi contenitori devono essere distribuite solo come file WAR.
Nei server delle applicazioni, i file EAR contengono configurazioni come la mappatura dei ruoli di sicurezza delle applicazioni, la mappatura di riferimento EJB e la mappatura dell'URL di root di contesto dei moduli Web.
Oltre ai moduli Web e ai moduli EJB, i file EAR possono contenere anche moduli connettore impacchettati come file RAR e moduli client impacchettati come file JAR.
.jar
, .war
ei .ear
file sono semplici archivi zip, quindi in grado di essere aperto da qualsiasi programma in grado di gestire i file .zip ordinarie.
guerra - archivio web. Viene utilizzato per distribuire applicazioni Web secondo lo standard servlet. È un file jar contenente una directory speciale denominata WEB-INF e diversi file e directory al suo interno (web.xml, lib, classi) oltre a tutto l'HTML, JSP, immagini, CSS, JavaScript e altre risorse dell'applicazione Web
orecchio - archivio aziendale. Viene utilizzato per distribuire applicazioni enterprise contenenti EJB, applicazioni Web e librerie di terze parti. È anche un file jar, ha una directory speciale chiamata APP-INF che contiene il file application.xml e contiene file jar e war.
I file WAR (archivio web) contengono file di classe servlet, JSP (pagine servlet Java), file HTML e grafici e altri file di supporto.
I file EAR (archivio aziendale) contengono i file WAR insieme ai file JAR contenenti codice.
Potrebbero esserci altre cose in quei file, ma sostanzialmente significano per quello che sembrano significare: WAR per roba di tipo web, EAR per roba di tipo aziendale (WAR, codice, connettori e altri).
File JAR
Un file JAR (abbreviazione di Java Archive) consente la combinazione di più file in uno solo. File con ".jar"; le estensioni sono utilizzate dagli sviluppatori software per distribuire classi Java e vari metadati. Questi contengono anche librerie e file di risorse, nonché file accessori (come i file delle proprietà).
Gli utenti possono estrarre e creare file JAR con il comando '.jar' di Java Development Kit (JDK). È inoltre possibile utilizzare gli strumenti ZIP.
I file JAR hanno file manifest opzionali. Le voci all'interno del file manifest prescrivono l'uso del file JAR. Una specifica di classe "principale" per una classe di file indica il file come programma distaccato o "autonomo".
File WAR
I file WAR (o Web Application Archive) possono comprendere file XML (extensible Markup Language), classi Java e pagine Server Java ai fini dell'applicazione Internet. Viene inoltre utilizzato per contrassegnare librerie e pagine Web che compongono un'applicazione Web. I file con estensione ".war" contengono l'app Web da utilizzare con i contenitori server o JSP (pagina server Java). Dispone di JSP, HTML (Hypertext Markup Language), JavaScript e vari file per la creazione delle suddette app Web.
Un file WAR è strutturato come tale per consentire directory e file speciali. Potrebbe anche avere una firma digitale (molto simile a quella di un file JAR) per mostrare la veridicità del codice.
File EAR
Un file EAR (Enterprise Archive) unisce i file JAR e WAR in un singolo archivio. Questi file con l'estensione '.ear' hanno una directory per i metadati. I moduli sono impacchettati in archivio per un funzionamento regolare e simultaneo dei diversi moduli all'interno di un server app.
Il file EAR ha anche descrittori di distribuzione (che sono file XML) che determinano efficacemente la distribuzione dei diversi moduli.
Consultare: http://www.wellho.net/mouth/754_tar-jar-war-ear-sar-files.html
tar (archivi su nastro) - Il formato utilizzato è il file scritto in unità seriali di fileName, fileSize, fileData - nessuna compressione. può essere enorme
Jar (archivio java) - tecniche di compressione utilizzate - generalmente contiene informazioni java come file di classe / java. Ma può contenere qualsiasi file e struttura di directory
war (archivi di applicazioni web) - simili come i file jar hanno solo una struttura di directory specifica secondo le specifiche JSP / Servlet ai fini della distribuzione
orecchio (archivi aziendali) - simile ai file jar. avere una struttura di directory in base ai requisiti J2EE in modo che possa essere distribuita su server applicazioni J2EE. - può contenere più file JAR e WAR
I file ear offrono più opzioni per configurare l'interazione con il server delle applicazioni.
Ad esempio: se la versione ibernata del server delle applicazioni è precedente a quella fornita dalle dipendenze, è possibile aggiungere quanto segue a ear-deployer-jboss-beans.xml per JBOSS per isolare i classloader ed evitare conflitti:
<bean name="EARClassLoaderDeployer" class="org.jboss.deployment.EarClassLoaderDeployer">
<property name="isolated">true</property>
</bean>
oppure a 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>
Ciò assicurerà che non vi siano conflitti tra classloader tra l'applicazione e il server delle applicazioni.
Normalmente il meccanismo classloader funziona in questo modo:
Quando una richiesta di caricamento della classe viene presentata a un programma di caricamento classi, per prima cosa chiede al proprio programma di caricamento classi padre di soddisfare la richiesta. Il genitore, a sua volta, chiede al genitore la classe fino a quando la richiesta non raggiunge la cima della gerarchia. Se il caricatore di classi nella parte superiore della gerarchia non è in grado di soddisfare la richiesta, il caricatore di classi figlio che lo ha chiamato è responsabile del caricamento della classe.
Isolando i classloader, il classloader dell'orecchio non verrà visualizzato nel genitore (= JBoss / altro classloader AS). Per quanto ne so, questo non è possibile con i file di guerra.
J2EE definisce tre tipi di archivi:
Java Archives (JAR) Un file JAR incapsula una o più classi Java, un manifest e un descrittore. I file JAR sono il livello più basso di archivio. I file JAR vengono utilizzati in J2EE per il packaging di bean e applicazioni Java lato client.
I file WAR degli archivi Web (WAR) sono simili ai file JAR, ad eccezione del fatto che sono specifici per le applicazioni Web create da servlet, JSP e classi di supporto.
Enterprise Archives (EAR) ”Un file EAR contiene tutti i componenti che compongono una particolare applicazione J2EE.
Per facilitare il trasporto del progetto, la distribuzione è stata semplificata. è necessario comprimere in un file. JAR (archivio Java) gruppo di file .class
WAR (archivio web) - ogni guerra rappresenta un'applicazione web - usa solo tecnologie legate al web come servlet, jsps può essere usato. - può essere eseguito su server Tomcat - app Web sviluppata solo con tecnologie web jsp servlet html js - rappresentazione delle informazioni solo nessuna transazione.
EAR (archivio aziendale) - ogni orecchio rappresenta un'applicazione aziendale - possiamo usare qualsiasi cosa da j2ee come ejb, jms può essere felicemente usato. - può essere eseguito su Glassfish come server non su server Tomcat. - l'app enterprise sviluppata da qualsiasi tecnologia da j2ee come tutte le app web più ejbs jms ecc. - esegue transazioni con rappresentazione delle informazioni. per esempio. App bancaria, app Telecom
.JAR, .WAR and .EAR
Puoi anche vedere un video tutorial. È molto semplice o più comprensibile. Spiegherà qual è la differenza tra .JAR, .WAR e .EAR Tutorial video : differenza tra .JAR, .WAR e .EAR