1. Elementos Principales del Descriptor de Despliegue
A continuación se presenta una visión general de los elementos más utilizados en el archivo descriptor de despliegue de aplicaciones web:
<web-app>
<!-- Nombre identificador de la aplicación web -->
<display-name></display-name>
<!-- Información descriptiva de la aplicación -->
<description></description>
<!-- Parámetros de contexto para inicialización global -->
<context-param></context-param>
<!-- Definición de filtros para procesamiento de solicitudes -->
<filter></filter>
<!-- Association de filtros con servlets o páginas JSP específicas -->
<filter-mapping></filter-mapping>
<!-- Configuración de listeners para eventos del ciclo de vida -->
<listener></listener>
<!-- Declaración de servlets y sus características -->
<servlet></servlet>
<!-- Mapeo de URLs a servlets específicos -->
<servlet-mapping></servlet-mapping>
<!-- Configuración de timeout para sesiones inactivas -->
<session-config></session-config>
<!-- Mapeo de extensiones de archivo a tipos MIME -->
<mime-mapping><mime-mapping>
<!-- Lista de archivos de bienvenida por defecto -->
<welcome-file-list></welcome-file-list>
<!-- Páginas de error personalizadas -->
<error-page></error-page>
<!-- Configuración de bibliotecas de tags -->
<taglib></taglib>
<!-- Referencia a recursos del entorno -->
<resource-env-ref></resource-env-ref>
<!-- Definición de recursos externos -->
<resource-ref></resource-ref>
<!-- Restricciones de seguridad para recursos protegidos -->
<security-constraint></security-constraint>
<!-- Configuración del método de autenticación -->
<login-config></login-config>
<!-- Declaración de roles de seguridad -->
<security-role></security-role>
<!-- Variables de entorno para la aplicación -->
<env-entry></env-entry>
<!-- Referencias a beans de empresa -->
<ejb-ref></ejb-ref>
<!-- Referencias a beans de empresa locales -->
<ejb-local-ref></ejb-local-ref>
</web-app>
2. Configuración Detallada de Cada Elemento
2.1 Iconos de la Aplicación Web
Especifica las imágenes que representarán la aplicación en herramientas de desarrollo:
<icon>
<small-icon>/images/app_small.png</small-icon>
<large-icon>/images/app_large.png</large-icon>
</icon>
2.2 Nombre de la Aplicación
Etiqueta identificativa para herramientas IDE:
<display-name>Aplicación Ejemplo</display-name>
2.3 Descripción de la Aplicación
<description>Aplicación de demostración con servlets y páginas JSP</description>
2.4 Parámetros de Contexto
Permiten definir parámetros accesibles desde toda la aplicación:
<context-param>
<param-name>configuracion.region</param-name>
<param-value>es_ES</param-value>
<description>Configuración regional de la aplicación</description>
</context-param>
Para acceder a estos parámetros desde un servlet:
String region = getServletContext().getInitParameter("configuracion.region");
2.5 Configuración de Filtros
Asociación de un nombre con una clase que implementa la interfaz Filter:
<filter>
<filter-name>filtroCodificacion</filter-name>
<filter-class>com.miproyecto.FiltroCodificacionUTF8</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filtroCodificacion</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.6 Configuración de Listeners
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
2.7 Configuración de Servlets
<servlet>
<servlet-name>controladorPrincipal</servlet-name>
<servlet-class>com.miproyecto.ControladorPrincipal</servlet-class>
<init-param>
<param-name>modoDebug</param-name>
<param-value>true</param-value>
</init-param>
<run-as>
<description>Rol para acceso anónimo</description>
<role-name>usuario</role-name>
</run-as>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>controladorPrincipal</servlet-name>
<url-pattern>/procesar</url-pattern>
</servlet-mapping>
2.8 Configuración de Tiempo de Sesión
<session-config>
<session-timeout>30</session-timeout>
</session-config>
2.9 Configuración de Tipos MIME
<mime-mapping>
<extension>html</extension>
<mime-type>text/html; charset=UTF-8</mime-type>
</mime-mapping>
2.10 Archivos de Bienvenida
<welcome-file-list>
<welcome-file>principal.jsp</welcome-file>
<welcome-file>principal.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
2.11 Páginas de Error Personalizadas
Por código de error HTTP:
<error-page>
<error-code>500</error-code>
<location>/paginas/errorServidor.jsp</location>
</error-page>
Por tipo de excepción:
<error-page>
<exception-type>java.lang.NumberFormatException</exception-type>
<location>/paginas/errorDatos.jsp</location>
</error-page>
2.12 Configuración de Biblioteca de Tags
<taglib>
<taglib-uri>http://miservidor.com/taglibs-personalizadas</taglib-uri>
<taglib-location>/WEB-INF/taglib/mis-tags.tld</taglib-location>
</taglib>
Nota: En caso de problemas con herramientas de desarrollo, utilizar la estructura dentro de jsp-config:
<jsp-config>
<taglib>
<taglib-uri>http://miservidor.com/taglibs-personalizadas</taglib-uri>
<taglib-location>/WEB-INF/taglib/utilidades.tld</taglib-location>
</taglib>
</jsp-config>
2.13 Referencias de Recursos de Entorno
<resource-env-ref>
<resource-env-ref-name>jms/ColaNotificaciones</resource-env-ref-name>
</resource-env-ref>
2.14 Configuración de Recursos
Ejemplo para recursos de correo:
<resource-ref>
<res-ref-name>mail/SesionCorreo</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Ejemplo para pool de conexiones de base de datos:
<resource-ref>
<description>DataSource JDBC para tienda online</description>
<res-ref-name>jdbc/base_datos_tienda</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
2.15 Restricciones de Seguridad
<security-constraint>
<display-name>Zona Segura de la Aplicación</display-name>
<web-resource-collection>
<web-resource-name>Área Protegida</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>administrador</role-name>
<role-name>gestor</role-name>
</auth-constraint>
</security-constraint>
2.16 Cofniguración de Autenticación
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Área de Autenticación Personalizada</realm-name>
<form-login-config>
<form-login-page>/admin/autenticacion/login.jsp</form-login-page>
<form-error-page>/admin/autenticacion/error.jsp</form-error-page>
</form-login-config>
</login-config>
2.17 Roles de Seguridad
<security-role>
<role-name>administrador</role-name>
</security-role>
2.18 Variables de Entorno
<env-entry>
<env-entry-name>minimoElementos</env-entry-name>
<env-entry-value>5</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
2.19 Declaración de EJB
<ejb-ref>
<description>Referencia a EJB de gestión de usuarios</description>
<ejb-ref-name>ejb/Usuario</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<home>com.miempresa.mipaquete.UsuarioHome</home>
<remote>com.miempresa.mipaquete.Usuario</remote>
</ejb-ref>
2.20 Declaración de EJB Local
<ejb-local-ref>
<description>Referencia local a EJB de procesamiento</description>
<ejb-ref-name>ejb/ProcesamientoPedidos</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.miempresa.mipaquete.ProcesamientoPedidosHome</local-home>
<local>com.miempresa.mipaquete.ProcesamientoPedidos</local>
</ejb-local-ref>