¿Qué es el formato de archivo WAR?
.war (Java Web Archive) es un formato de archivo similar a un archivo JAR, construido sobre el contenedor estándar ZIP. Los archivos .war contienen aplicaciones web Java y componentes del lado del servidor que pueden desplegarse y ejecutarse en un contenedor de servlets como Apache Tomcat o Jetty. Además de los archivos .class compilados, el archivo puede almacenar recursos adicionales para ejecutarse en el servidor, incluyendo páginas .jsp, HTML estático y CSS. El directorio obligatorio WEB-INF/ contiene el descriptor de despliegue web.xml y una carpeta lib/ para los archivos .jar de dependencias incluidas.
Uso de archivos .war
Un archivo .war, al igual que cualquier archivo comprimido, puede desempaquetarse para ver el código fuente y otros recursos; cámbiele el nombre a .zip y ábralo con cualquier herramienta de compresión. El entorno de ejecución, sin embargo, requiere que la aplicación permanezca en formato .war para su despliegue; el contenedor de servlets gestiona la carga de clases y el enrutamiento de solicitudes. Los proyectos modernos de Spring Boot a menudo se distribuyen como un fat-JAR autónomo en lugar de un .war, pero el despliegue WAR sigue siendo el estándar en servidores Jakarta EE como WildFly y WebSphere. .war es la contraparte de aplicaciones web de los archivos .EAR, que agrupan aplicaciones empresariales completas.
Seguridad y protección
RIESGO: MEDIUMUn WAR contiene código ejecutable del lado del servidor (servlets compilados y librerías JAR incluidas), por lo que desplegar uno ejecuta ese código en su servidor con los privilegios del servidor. Solo despliegue WARs de fuentes confiables; un WAR malicioso o comprometido puede alojar una shell web o dependencias vulnerables. Inspeccionarlo (renombrar a .zip) es seguro; desplegarlo es el paso arriesgado. Mantenga parcheados su contenedor de servlets y las librerías incluidas en el WAR (riesgo de cadena de suministro, p. ej., librerías de registro vulnerables).
Detalles del formato
en pocas palabras- Archivo web de Konqueror - Konqueror de KDE podía guardar una página web (y sus activos) como un archivo .war; un uso de KDE heredado y poco común, no es el formato dominante.
- WAR (audio/muestra) y datos de juegos - Algunas herramientas heredadas usaban .war para muestras de audio sin procesar o archivos de activos de juegos (p. ej., algunos motores); no relacionado con el formato Java.
Programas que abren archivos WAR
Detalles técnicos
especificación profunda| Formato de contenedor | Archivo ZIP; magic bytes PK (0x50 0x4B 0x03 0x04) en el desplazamiento 0 - idéntico al ZIP estándar |
| Método de compresión | DEFLATE por entrada (predeterminado de ZIP); las entradas individuales pueden estar STORED (almacenadas) sin compresión |
| Tipo MIME | application/java-archive |
| Orden de bytes | Little-endian (heredado de la especificación ZIP) |
| Estructura de directorios requerida | Debe incluir la carpeta WEB-INF/ que contiene el descriptor de despliegue web.xml, y los subdirectorios classes/ y lib/ |
| Codificación | Binario |
| Tamaño de archivo típico | 1 MB - 300 MB; varía según el número de JAR de dependencias incluidos y activos estáticos |
| Integridad / firma | CRC-32 por entrada; firma de código JAR opcional a través de archivos de firma .SF / .RSA en META-INF/ |
| Máximo de entradas de archivo | 65.535 (ZIP estándar); la extensión ZIP64 elimina este límite |
| Objetivo de despliegue | Contenedores de servlets y servidores de aplicaciones Jakarta EE: Apache Tomcat, Jetty, WildFly, GlassFish, WebSphere |
| Declaración de versión | Versión de la especificación Servlet/Jakarta EE declarada en el elemento <web-app> de WEB-INF/web.xml; opcionalmente en META-INF/MANIFEST.MF |
| Aislamiento de clases | Cada WAR desplegado obtiene un cargador de clases aislado; evita conflictos de versiones de librerías entre aplicaciones desplegadas conjuntamente |
| Jerarquía en el empaquetado Java EE | WAR es el nivel de aplicación web; JAR contiene librerías/aplicaciones; EAR (Enterprise Archive) envuelve WARs y JARs de EJB en una unidad desplegable |
| Soporte de plataforma | Multiplataforma; se ejecuta en cualquier SO con una JVM y un contenedor de servlets compatible (Windows, Linux, macOS) |
| Despliegue en caliente (Hot deployment) | La mayoría de los contenedores de servlets admiten desplegar o reemplazar un archivo WAR sin reiniciar completamente el servidor (despliegue directo) |
| Lanzado | 1999 (Java Servlet 2.2 / J2EE 1.2) |
| Última versión | Tracks Jakarta EE / Servlet spec (Jakarta Servlet 6.0, 2022); WAR layout itself is stable |
| Estándar abierto | Sí · libre de regalías |
| Especificación | jakarta.ee |
Conversiones de WAR
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos WAR.