2010-09-27 13 views
6

Ho un'applicazione web Java EE che non fa uso di EJB. Mi rivolgo a Jetty/Tomcat per l'implementazione un po 'di tempo e quindi ho bisogno di un packaging WAR. Tuttavia, sono anche io l'obiettivo di JBoss e Websphere.WAR vs EAR per l'applicazione Web senza EJB?

La mia comprensione è che i server di applicazioni Java EE in piena regola possono utilizzare i formati EAR o WAR. Quando dovrei usare uno sull'altro e perché? Capisco che sono entrambi formati di file compressi standard e ho letto 10 diversi frammenti che tentano di spiegarli (including this one), ma non sono più vicino alla comprensione dei pro e dei contro di ciascuno.

risposta

5

Se si dispone solo di moduli Web, utilizzare il file WAR. Se si dispone di diversi moduli Java EE - utilizzare EAR. Sebbene sia possibile consegnare solo moduli Web in EAR - non è necessario farlo (e sarà necessario eseguire una configurazione di implementazione più complessa)

+1

Quali sono gli esempi di altri "moduli J2EE"? – HDave

+0

Ad esempio, EJB, WebServices –

+1

La mia applicazione dispone di servizi Web (SOAP), ma non sono sicuro del motivo per cui ciò potrebbe beneficiare di un EAR ... potresti elaborare? – HDave

0

Il punto cruciale è se si ha bisogno di qualcosa fornito in un file EAR (che può contenere detto file WAR). Se è così, allora ha senso implementare come EAR.

Può anche cablare parte della configurazione che è necessario eseguire manualmente in Tomcat ecc. Un esempio tipico è l'URL associato all'applicazione Web, in cui è necessario sostituire l'euristica predefinita con un file di configurazione specifico del contenitore per un WAR, ma puoi inserirlo direttamente nel file di configurazione EAR.

Inoltre, durante lo sviluppo le WAR possono essere spesso distribuite a caldo direttamente in forma esplosa, dove le EAR devono essere spacchettate e distribuite. Per Glassfish di Eclipse la differenza è abbastanza evidente.

+0

Non sono riuscito a trovare nella documentazione Tomcat come si distribuisce un EAR lì. Sta usando l'Embedded JBoss? – HDave

+0

Non è possibile distribuire gli EAR in Tomcat. Ma puoi avere una GUERRA nuda e la stessa identica WAR avvolta bene in un EAR per server separati. –

+0

Sì, non è possibile distribuire EAR su Tomcat, poiché Tomcat è un contenitore servlet non un server applicazioni. Quindi, se è necessario distribuire l'applicazione Web sia a Tomcat che a JBoss e WebSphere, utilizzare il file WAR. Funzionerà per tutti loro –

0

In applicazione J2EE, i moduli sono confezionati come EAR, JAR e WAR in base alla loro funzionalità

Se si utilizza solo Servlet, JSP, file HTML e GIF. Quindi utilizzare .WAR

WAR:(Web ARchive) Web modules which contain Servlet class files, JSP 
Files, supporting files, GIF and HTML files are packaged as JAR file 
with .war (web archive) extension. 

Se si utilizzano diversi moduli differenti Java EE come EJB (+ Servlet, JSP, GIF e file HTML + altra tecnologia). Quindi utilizzare .EAR

EAR: (Enterprise ARchive) All above files (.jar and .war) are packaged 
as JAR file with .ear (enterprise archive) extension and deployed into 
Application Server. 
Problemi correlati