Articulo de referencia

WAR (formato de archivo)

PK\\x03\\x04 (standard ZIP file)"},"developer":{"wt":"{{hlist|[[Sun Microsystems|Sun]]|[[Oracle Corporation|Oracle]]|[[Eclipse Foundation|Eclipse]]}}"},"creatorcode":{"wt":""},"...

En ingeniería de software , un archivo WAR ( Web Application Resource [ 1 ] o Web Application ARchive [ 2 ] ) es un archivo utilizado para distribuir una colección de archivos JAR , Jakarta Server Pages , Jakarta Servlets , clases Java , archivos XML , bibliotecas de etiquetas, páginas web estáticas ( HTML y archivos relacionados) y otros recursos que juntos constituyen una aplicación web .

Contenido y estructura

Un archivo WAR puede firmarse digitalmente del mismo modo que un archivo JAR para permitir que otros determinen de dónde proviene el código fuente.

Dentro de un archivo WAR existen archivos y directorios especiales:

  • El directorio /WEB-INF del 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 utiliza servlets, el contenedor de servlets utiliza web.xml para determinar a qué servlet se enrutará una solicitud URL . El archivo web.xml también se utiliza para definir variables de contexto a las que se puede hacer referencia dentro de los servlets y para definir dependencias de entorno que el implementador debe configurar. Un ejemplo de esto es una dependencia de una sesión de correo electrónico utilizada para enviar correos electrónicos. El contenedor de servlets es responsable de proporcionar este servicio.

Ventajas de los archivos WAR

  • Pruebas y despliegue sencillos de aplicaciones web
  • Fácil identificación de la versión de la aplicación desplegada
  • Todos los contenedores de Jakarta EE admiten archivos WAR.
  • La estructura MVC admite archivos WAR.

Suponiendo que los entornos de producción no promueven una corrección sin pruebas suficientes antes de la implementación, un archivo WAR tiene una clara ventaja cuando se utilizan archivos de propiedades para identificar variables específicas del entorno. Por ejemplo, un servidor LDAP en un entorno de prueba podría ser algo 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 externo 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 tener la certeza de que el archivo WAR probado y verificado es exactamente el mismo que se implementará en producción.

Desventajas de los archivos WAR

Algunos consideran que el despliegue web mediante archivos WAR es desventajoso cuando se requieren cambios menores en el código fuente para entornos dinámicos. Cada cambio en el código fuente debe volver a empaquetarse y desplegarse en desarrollo. [ 3 ] Esto no requiere detener el servidor web si está configurado para el despliegue en tiempo de ejecución. [ 4 ]

Ejemplo

El siguiente archivo web.xml de ejemplo muestra la declaración y asociación de un servlet :

<?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> HelloServlet </servlet-name> <servlet-class> mypackage.HelloServlet </servlet-class> </servlet><servlet-mapping> <servlet-name> HelloServlet </servlet-name> <url-pattern> /HelloServlet </url-pattern> </servlet-mapping><resource-ref> <description> Referencia de recurso a una fábrica de instancias de javax.mail.Session que se pueden usar para enviar mensajes de correo electrónico , preconfigurada para conectarse al servidor SMTP apropiado . </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>

El /WEB-INF/classesdirectorio se encuentra en la ruta de clases del cargador de clases . (La ruta de clases consiste en una lista de ubicaciones desde las que la JVM puede cargar y ejecutar archivos). El directorio contiene las clases asociadas con la propia aplicación web..class/WEB-INF/classes

Cualquier archivo JAR que se coloque en el /WEB-INF/libdirectorio también se colocará en la ruta de clases del cargador de clases.

Véase también

Referencias

  1. Crossley, Allistair. "Apache Tomcat 8 (8.0.44) - Implementación de aplicaciones web Tomcat" . Apache Software Foundation . Consultado el 27 de junio de 2017 .
  2. Hunter, Jason (15 de octubre de 1999). "¿Qué hay de nuevo en la API de Servlets de Java 2.2?" . JavaWorld . Consultado el 8 de noviembre de 2020 .
  3. "Ciclo de vida de las aplicaciones web" . El tutorial de Java EE 6. Oracle .
  4. "Implementación en un servidor Tomcat en funcionamiento" . Apache Software Foundation .
  • Archivos web de empaquetado (Tutorial de Jakarta EE 9.1)
  • JSR 154: Especificación de Java™ Servlet 2.4