En la ingeniería de software , una GUERRA archivo ( W eb A plicación R esource [1] o W eb aplicación AR cebolleta [2] ) es un archivo utilizado para distribuir una colección de JAR -limas, Java Server Pages , Java Servlets , Java clases , XML archivos, bibliotecas de etiquetas, páginas web estáticas ( HTML y archivos relacionados) y otros recursos que en conjunto constituyen una aplicación web .
Extensión de nombre de archivo | .guerra |
---|---|
Tipo de medio de Internet | aplicación / java-archive |
número mágico | PK\x03\x04 (archivo ZIP estándar) |
Desarrollado por | Microsistemas solares |
Contenedor para | JSP , Java Servlet |
Extendido desde | FRASCO |
Contenido y estructura
Un archivo WAR se puede firmar digitalmente de la misma manera que un archivo JAR para permitir que otros determinen de dónde proviene el código fuente.
Hay archivos y directorios especiales dentro de un archivo WAR:
- El directorio / WEB-INF en el archivo WAR contiene un archivo llamado web.xml que define la estructura de la aplicación web. Si la aplicación web solo sirve archivos JSP, el archivo web.xml no es estrictamente necesario. Si la aplicación web usa servlets, entonces el contenedor de servlets usa web.xml para determinar a qué servlet se enrutará una solicitud de URL . El archivo web.xml también se usa para definir variables de contexto a las que se puede hacer referencia dentro de los servlets y se usa para definir dependencias ambientales que se espera que configure el implementador. Un ejemplo de esto es una dependencia de una sesión de correo utilizada para enviar correo electrónico. El contenedor de servlets es el encargado de brindar este servicio.
Ventajas de los archivos WAR
- Prueba e implementación fáciles de aplicaciones web
- Fácil identificación de la versión de la aplicación implementada
- Todos los contenedores Java EE admiten archivos WAR
- La estructura MVC admite archivos WAR.
Suponiendo que los entornos de producción no promueven una solución sin pruebas suficientes antes de la implementación, un archivo WAR tiene una clara ventaja cuando los archivos de propiedades se utilizan para identificar variables específicas del entorno. Por ejemplo, un servidor LDAP en un entorno de prueba puede ser algo así como ldaps://testauth.example.com:636
. El servidor LDAP en un entorno de producción es ldaps://auth.example.com:636
. Un archivo de propiedades externas definiría el enlace con algo como:
LINKED_PAGE = ldaps: //testauth.example.com: 636
El código fuente lee el archivo de propiedades para determinar el servidor LDAP de destino. De esta forma, los desarrolladores pueden estar seguros de que el archivo WAR probado y verificado es exactamente el mismo que el que se está promoviendo a producción.
Desventajas de los archivos WAR
Algunos consideran que la implementación web utilizando archivos WAR es una desventaja cuando se requieren cambios menores en el código fuente para entornos dinámicos. Cada cambio en el código fuente debe reempaquetarse e implementarse en desarrollo. [3] Esto no requiere detener el servidor web si está configurado para implementación en tiempo de ejecución. [4]
Ejemplo
El siguiente archivo web.xml de muestra demuestra la declaración y asociación de un servlet :
xml version = "1.0" encoding = "UTF-8"?> PUBLIC "- // Sun Microsystems, Inc.//DTD Web Application 2.2 // EN" "http: // java. sun.com/j2ee/dtds/web-app_2_2.dtd "> HelloServlet mypackage.HelloServlet HelloServlet / HelloServlet ón> Referencia de recurso a una fábrica para javax.mail.Session instancias que pueden usarse para enviar mensajes de correo electrónico, preconfigurado para conectarse al servidor SMTP apropiado. correo / Sesión javax.mail.Session Contenedor
El /WEB-INF/classes
directorio se encuentra en el cargador de clases 's ruta de clase . (La ruta de clases consiste en una lista de ubicaciones desde las cuales .class
la JVM puede cargar y ejecutar archivos). El /WEB-INF/classes
directorio contiene las clases asociadas con la propia aplicación web.
Cualquier archivo JAR colocado en el /WEB-INF/lib
directorio también se colocará en la ruta de clases del ClassLoader.
Ver también
Referencias
- ^ Crossley, Allistair. "Apache Tomcat 8 (8.0.44) - Implementación de aplicaciones web Tomcat" . Fundación de software Apache . Consultado el 27 de junio de 2017 .
- ^ Hunter, Jason (15 de octubre de 1999). "¿Qué hay de nuevo en Java Servlet API 2.2?" . JavaWorld . Consultado el 8 de noviembre de 2020 .
- ^ "Ciclo de vida de las aplicaciones web" . El tutorial de Java EE 6 . Oracle .
- ^ "Implementación en un servidor Tomcat en ejecución" . Fundación de software Apache .
enlaces externos
- Empaquetado de archivos web (el tutorial de Jakarta EE 8)
- JSR 154: Especificación de JavaTM Servlet 2.4