Em engenharia de software, um arquivo WAR (do inglês Web application ARchivehttps://java.sun.com/developer/technicalArticles/Servlets/servletapi/) é 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 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 Formatos de arquivo relacionados: EAR (formato de arquivo) JAR (formato de arquivo) EXE (formato de arquivo)

Categoria:Formatos de empacotamento de arquivos Categoria:Plataforma Java