Saltar para o conteúdo

WAR (formato de arquivo)

Origem: Wikipédia, a enciclopédia livre.
Web ARchive
Extensão do arquivo .war
Desenvolvido por Sun Microsystems
Arquivador de JSP, Servlet Java
Variante de JAR

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.

Conteúdo e estrutura

[editar | editar código-fonte]

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.

Formatos de arquivo relacionados:

Referências