WAR (formato de arquivo)
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.
Ver também
[editar | editar código-fonte]Formatos de arquivo relacionados: