Fragmentos Web
Al desarrollar aplicaciones web, si varios módulos web utilizan los mismos componentes, considere la posibilidad de incluir los componentes en un archivo JAR (Java archive) de fragmento Web. El archivo JAR de fragmento web contiene los metadatos de configuración y archivos de clase de componente. Esta práctica facilita la realización de copias de una aplicación a otra.
Los fragmentos del descriptor de despliegue del módulo web (fragmentos web) proporcionan los mismos metadatos de configuración que proporciona un archivo web.xml, pero existen como un archivo web-fragment.xml empaquetado dentro de un archivo JAR en el directorio WEB-INF/lib.
Los desarrolladores de infraestructura proporcionan los archivos JAR que están incluidos en una aplicación web que utiliza dicha infraestructura. Si la infraestructura utiliza servlets, filtros u otra configuración de módulo web, los fragmentos web ofrecen la posibilidad de arrastrar simplemente el archivo JAR a una aplicación sin necesidad de cambios en la configuración de módulo web existente. Antes era necesario que los desarrolladores de aplicaciones web aumentaran la configuración con los metadatos adicionales necesarios para la infraestructura. Otro caso de uso es la necesidad de utilizar los mismos componentes en los módulos web que se ha citado anteriormente. Asimismo, el uso de objetos o apéndices falsos puede simplificarse gracias a los fragmentos web.


- Los archivos JAR sólo se exploran para buscar anotaciones o metadatos de fragmentos web si están en el directorio WEB-INF/lib. No se exploran anotaciones o metadatos de fragmentos web en bibliotecas compartidas.
- Las anotaciones que están en las clases en el directorio WEB-INF/classes se fusionan primero y tienen prioridad sobre los metadatos del directorio WEB-INF/lib.
- Todos los archivos JAR del directorio WEB-INF/lib se consideran fragmentos web, independientemente de si contienen un archivo web-fragment.xml. Si un archivo web-fragment.xml no existe en un archivo JAR, se considera que tiene un archivo web-fragment.xml implícito vacío.
- Las anotaciones de cada archivo JAR en el directorio WEB-INF/lib se fusionan en el archivo web-fragment.xml correspondiente antes de comprobar si existen conflictos entre los fragmentos web. Por lo tanto, los conflictos entre las anotaciones de distintos fragmentos impiden el despliegue de la aplicación.
- Si define el orden de fragmentos web, la anotación y los metadatos de fragmento web de un fragmento web se fusionan antes que los de otro fragmento posterior.
- Como todos los archivos JAR del directorio WEB-INF/lib se consideran fragmentos, el elemento <others> en un elemento <absolute-ordering> se aplica a todos los archivos JAR que no se especifican en ningún otro lugar en el orden.