WAR (formato de arquivo)

Em engenharia de software, um arquivo WAR (do inglês Web application ARchive[1]) é um arquivo JAR usado para distribuir uma coleção de JavaServer Pages, Servlets Java, classes Java, arquivos XML, bibliotecas de tag, páginas web estáticas (arquivos HTML e relacionados) e outros recursos que, juntos, constituem uma aplicação web.

Web ARchive
Extensão do arquivo .war
Desenvolvido por Sun Microsystems
Arquivador de JSP, Servlet Java
Variante de JAR

Conteúdo e estrutura editar

Um arquivo WAR pode ser assinado digitalmente do mesmo modo que um arquivo JAR, afim de permitir que outros determinem de que fonte o código é proveniente.

Há arquivos e diretórios especiais dentro de um arquivo WAR.

O diretório /WEB-INF no arquivo WAR contem um arquivo chamado web.xml que define a estrutura da aplicação web. Se a aplicação web está apenas servido arquivos JSP, o arquivo web.xml não é estritamente necessário. Se a aplicação web utiliza servlets, então o recipiente (container) de servlets usa o web.xml para determinar a qual servlet uma solicitação de URL será roteada. O web.xml também é usado para definir variáveis de contexto que podem ser referenciadas dentro dos servlets e é usada para definir dependências de ambiente que o implantador (deployer) espera configurar. Um exemplo disto é uma dependência de uma sessão de email usada para enviar email. O recipiente de servlet é responsável por fornecer este serviço.

Vantagens dos arquivos WAR:

  • desenvolvimento, teste e implantação fáceis
  • a versão da aplicação implantada é facilmente identificada
  • todos os recipientes Java EE suportam arquivos .WAR

Uma desvantagem da implantação web utilizando arquivos WAR em ambientes muito dinâmicos é que alterações pequenas não podem ser feitas durante o tempo de execução. Qualquer alteração, seja qual for, requer regeração e reimplantação do arquivo WAR inteiro.

O seguinte web.xml demonstra como um servlet é declarado e associado.

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE web-app
     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
     "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
 
 <web-app>
     <servlet>
         <servlet-name>ServletOla</servlet-name>
         <servlet-class>mypackage.ServletOla</servlet-class>
     </servlet>
 
     <servlet-mapping>
         <servlet-name>ServletOla</servlet-name>
         <url-pattern>/ServletOla</url-pattern>
     </servlet-mapping>
 
     <resource-ref>
         <description>
             Referência de recurso a uma fábrica para instâncias javax.mail.Session
             que pode ser usado para enviar mensagens de correio eletrônico, 
             pré-configurado para se conectar ao servidor SMTP apropriado.
         </description>
         <res-ref-name>mail/Session</res-ref-name>
         <res-type>javax.mail.Session</res-type>
         <res-auth>Container</res-auth>
     </resource-ref>
 </web-app>

O diretório /WEB-INF/classes está no classpath do ClassLoader. Isto é onde os arquivos .class são carregados quando a aplicação web está em execução. Quaisquer arquivos JAR colocados no diretório /WEB-INF/lib também será colocado no classpath do ClassLoader.

Ver também editar

Formatos de arquivo relacionados:

Referências