O que é o formato de ficheiro WAR?
.war (Java Web Archive) é um formato de arquivo compactado semelhante a um arquivo JAR, construído sobre o contêiner padrão ZIP. Arquivos .war contêm aplicações web Java e componentes do lado do servidor que podem ser implantados e executados em um contêiner de servlets, como Apache Tomcat ou Jetty. Além de arquivos .class compilados, o arquivo pode armazenar recursos adicionais para serem executados no servidor, incluindo páginas .jsp, HTML estático e CSS. O diretório obrigatório WEB-INF/ contém o descritor de implantação web.xml e uma pasta lib/ para arquivos .jar de dependências incluídas.
Usando arquivos .war
Um arquivo .war, como qualquer arquivo compactado, pode ser descompactado para visualizar o código-fonte e outros recursos - renomeie-o para .zip e abra-o com qualquer ferramenta de arquivamento. O ambiente de execução, no entanto, exige que a aplicação permaneça no formato .war para a implantação; o contêiner de servlets gerencia o carregamento de classes e o roteamento de requisições. Projetos modernos com Spring Boot geralmente entregam um fat-JAR autônomo em vez de um .war, mas a implantação via WAR continua sendo o padrão em servidores Jakarta EE, como WildFly e WebSphere. O .war é a contraparte de aplicação web para os arquivos .EAR, que agrupam aplicações empresariais completas.
Segurança e proteção
RISCO: MEDIUMUm WAR contém código executável do lado do servidor (servlets compilados e bibliotecas JAR incluídas), portanto, implantar um executa esse código no seu servidor com os privilégios do servidor. Implante apenas WARs de fontes confiáveis; um WAR malicioso ou comprometido pode hospedar um web shell ou dependências vulneráveis. Inspecionar (renomear para .zip) é seguro; implantar é a etapa de risco. Mantenha seu contêiner de servlets e as bibliotecas do WAR atualizadas (risco de cadeia de suprimentos, ex: bibliotecas de log vulneráveis).
Detalhes do formato
em resumo- Arquivo web Konqueror - O Konqueror do KDE podia salvar uma página web (e ativos) como um arquivo .war - um uso legado e raro do KDE, não o formato dominante.
- WAR (áudio/amostra) e dados de jogos - Algumas ferramentas legadas usavam .war para amostras de áudio bruto ou arquivos de ativos de jogos (ex: alguns motores); não relacionado ao formato Java.
Programas que abrem arquivos WAR
Detalhes técnicos
especificação profunda| Formato de contêiner | Arquivo ZIP; magic bytes PK (0x50 0x4B 0x03 0x04) no deslocamento 0 - idêntico ao ZIP padrão |
| Método de compressão | DEFLATE por entrada (padrão ZIP); entradas individuais podem ser armazenadas (STORED) sem compressão |
| Tipo MIME | application/java-archive |
| Ordem dos bytes | Little-endian (herdado da especificação ZIP) |
| Estrutura de diretórios obrigatória | Deve incluir a pasta WEB-INF/ contendo o descritor de implantação web.xml, e subdiretórios classes/ e lib/ |
| Codificação | Binário |
| Tamanho de arquivo típico | 1 MB - 300 MB; varia com o número de JARs de dependência incluídos e ativos estáticos |
| Integridade / assinatura | CRC-32 por entrada; assinatura de código JAR opcional via arquivos de assinatura .SF / .RSA em META-INF/ |
| Máximo de entradas no arquivo | 65.535 (ZIP padrão); a extensão ZIP64 remove este limite |
| Alvo de implantação | Contêineres de servlets e servidores de aplicação Jakarta EE: Apache Tomcat, Jetty, WildFly, GlassFish, WebSphere |
| Declaração de versão | Versão da especificação Servlet/Jakarta EE declarada no elemento <web-app> do WEB-INF/web.xml; opcionalmente no META-INF/MANIFEST.MF |
| Isolamento de classes | Cada WAR implantado recebe um carregador de classes (classloader) isolado; evita conflitos de versão de biblioteca entre aplicações co-implantadas |
| Hierarquia no empacotamento Java EE | WAR é a camada de aplicação web; JAR contém bibliotecas/apps; EAR (Enterprise Archive) envolve WARs e JARs de EJB em uma única unidade implantável |
| Suporte de plataforma | Multiplataforma; funciona em qualquer SO com uma JVM e contêiner de servlets compatível (Windows, Linux, macOS) |
| Implantação a quente (Hot deployment) | A maioria dos contêineres de servlets suporta implantar ou substituir um arquivo WAR sem a reinicialização total do servidor (implantação drop-in) |
| Lançado | 1999 (Java Servlet 2.2 / J2EE 1.2) |
| Versão mais recente | Tracks Jakarta EE / Servlet spec (Jakarta Servlet 6.0, 2022); WAR layout itself is stable |
| Padrão aberto | Sim · livre de royalties |
| Especificação | jakarta.ee |
Conversões de WAR
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos WAR.