Diferença deploy WAR e EAR

Qual diferença e quando usar um ou outro?

WAR, como o próprio nome já diz, é um arquivo de aplicação web. Ele precisa estar acoplado à um container e é acessado principalmente via conexão HTTP. Já o EAR é um pacote standalone, necessita de um cliente para ser acessado (geralmente um JAR).

Olá!

WAR é um arquivo que contém um projeto Web (Web Archive). Nele, você monta uma aplicação e publica num servlet container (por exemplo, Tomcat).
EAR é um arquivo que contém EJBs no padrão do JEE (Enterprise Archive). Você coloca seus EJBs neste projeto, que também pode conter um WAR dentro.

Abraços!!

EAR é a aplicação completa, que inclui EJBs, e paginas WEB(WAR) e libs.

O Xml de deploy (application.xml) de um EAR é parecido com este:

<application>
<display-name>My Application</display-name>

<module>
<web>
<web-uri>myapp.war</web-uri>
<context-root>/myapp</context-root>
</web>
</module>

<module>
<ejb>myapp.jar</ejb>
</module>

<library-directory>lib</library-directory>

</application>

E o WAR é somente a aplicação WEB, que pode fazer parte da aplicação completa.