2010-09-27 4 views
6

J'ai une application web Java EE qui n'utilise pas les EJB. Je cible Jetty/Tomcat pour le déploiement de temps en temps et ai donc besoin d'un emballage de WAR. Cependant, je suis également la cible de JBoss et de Websphere. Je crois comprendre que les serveurs d'applications Java EE complets peuvent prendre des formats EAR ou WAR. Quand devrais-je utiliser l'un plutôt que l'autre et pourquoi? Je comprends qu'ils sont deux formats de fichiers compressés standard et j'ai lu 10 extraits différents qui tentent de les expliquer (including this one), mais je ne suis pas plus près de comprendre les avantages et les inconvénients de chacun.WAR vs EAR pour une application Web sans EJB?

Répondre

5

Si vous n'avez que des modules Web, utilisez le fichier WAR. Si vous disposez de différents modules Java EE, utilisez EAR. Bien que vous ne puissiez livrer que des modules web dans EAR - cela ne sert à rien (et vous aurez besoin de faire une configuration de déploiement plus complexe)

+1

Quels sont les exemples d'autres «modules J2EE»? – HDave

+0

Par exemple, EJB, WebServices –

+1

Mon application a des services Web (SOAP), mais je ne sais pas pourquoi cela pourrait bénéficier d'un EAR ... pourriez-vous élaborer? – HDave

0

Le point crucial est si vous avez besoin de quelque chose fourni dans un fichier EAR (qui peut contenir ledit fichier WAR). Si oui, alors il est logique de déployer comme un EAR. Il peut aussi câbler une partie de la configuration que vous devez faire manuellement dans Tomcat, etc. Un exemple typique est l'URL liée à l'application web, où vous devez remplacer l'heuristique par défaut avec un fichier de configuration spécifique au conteneur pour un WAR, mais vous pouvez le placer directement dans le fichier de configuration EAR.

De plus, au cours du développement, les WAR peuvent souvent être déployées à chaud directement sous forme éclatée, où les fichiers EAR doivent être déballés et déployés. Pour Glassfish d'Eclipse, la différence est tout à fait perceptible.

+0

Je n'ai pas pu trouver dans la documentation de Tomcat comment on déploie un EAR là-bas. Est-ce en utilisant l'Embedded JBoss? – HDave

+0

Vous ne pouvez pas déployer les fichiers EAR dans Tomcat. Mais vous pouvez avoir un WAR nu et exactement le même WAR enveloppé dans un EAR pour des serveurs séparés. –

+0

Oui, vous ne pouvez pas déployer les fichiers EAR sur Tomcat, car Tomcat est un conteneur de servlet et non un serveur d'applications. Ainsi, si vous devez déployer votre application Web à la fois sur Tomcat et sur JBoss et WebSphere, utilisez le fichier WAR. Cela fonctionnera pour tous –

0

En application J2EE, les modules sont empaquetées en tant que EAR, JAR et WAR en fonction de leur fonctionnalité

Si vous utilisez uniquement Servlet, JSP, les fichiers GIF et HTML. Ensuite, utilisez .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. 

Si vous utilisez plusieurs différents modules Java EE comme (EJB + Servlet, JSP, les fichiers GIF et HTML + autres technologies). Utilisez ensuite .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. 
Questions connexes