Reducción de las búsquedas de anotaciones durante el despliegue de aplicaciones
Las aplicaciones empresariales que contienen muchas clases y que tienen habilitado el proceso de anotaciones (que no se han marcado como "metadata-complete") tardan más en desplegarse. Es necesario más tiempo para explorar binarios de aplicaciones para anotaciones que introdujo Java™ EE 5. Si no hay otras opciones adicionales para limitar las clases que se van a explorar, cuando se ha habilitado la exploración para un módulo, se deberán explorar todas las clases del módulo. Una exploración de todas las clases es necesaria incluso cuando hay solamente un pequeño subconjunto de clases en un determinado módulo que tenga anotaciones.
Antes de empezar
Se utiliza la tecnología de exploración rápida de códigos de bytes para mejorar el rendimiento de despliegue. Sin embargo, se consigue un mejor rendimiento de despliegue si se limitan las clases de las que se van a explorar las anotaciones.
Cuando hay un módulo marcado como metadata-complete, se aplica a todo el módulo. No puede marcar el módulo como metadata-complete cuando es necesario realizar un proceso de anotación. Adicionalmente, el hecho de marcar el módulo como metadata-complete impide la exploración de un módulo, lo que genera problemas en los módulos web que utilizan anotaciones de servicios web o EJB.
Es posible que los archivos JAR de archivadores de módulos web (archivos WAR) no se puedan transferir a la carpeta de la biblioteca de la aplicación. Sin embargo, la transferencia de archivos WAR podría no resultar posible puesto que al hacerlo, se podría romper la encapsulación del módulo web o porque existen varios módulos que requieren diferentes archivos JAR.
Para solucionar estas limitaciones, y reducir el tiempo de despliegue, IBM® WebSphere Application Server proporciona opciones para limitar las clases de las que se van a explorar las anotaciones.
Instale una aplicación que admita Java Platform, Enterprise Edition (Java EE) 5 o posterior en un servidor de productos. Si el despliegue es excesivamente lento y tiene previsto desplegar de nuevo la aplicación en el futuro, y si la aplicación contiene módulos que se hayan habilitado para el proceso de anotaciones, lleve a cabo un procedimiento en este tema para reducir el número de clases de las que se exploran las anotaciones.
Acerca de esta tarea
El producto proporciona una función de filtrado configurable para reducir el número de clases que se buscan para las anotaciones. Puede identificar qué módulos o paquetes Java se pueden ignorar en el proceso de anotaciones a través de cuatro propiedades: (o atributos de manifiesto):
- Ignore-Scanning-Archives
- Ignore-Scanning-Packages
- Include-Scanning-Archives
- Include-Scanning-Packages
Las propiedades se pueden especificar en amm.filter.properties en raíz_servidor_aplicaciones/properties o se pueden especificar como atributos de manifiesto.
- com.ibm.ws.amm.scan.context.filter.archives
- com.ibm.ws.amm.scan.context.filter.packages
- com.ibm.ws.amm.scan.context.include.archives
- com.ibm.ws.amm.scan.context.include.packages
Utilice estas opciones para limitar de qué clases se exploran las anotaciones. El rendimiento se mejora proporcionalmente según el número de clases que se eliminen. Elimine del proceso aquellas clases que no contengan datos de anotaciones.
Generalmente, el filtrado se realiza en archivadores completos. Un caso habitual de filtrado es filtrar archivos JAR del programa de utilidad incluido un WAR que no contiene datos de anotaciones.
Las propiedades Ignore-Scanning-Archives e Ignore-Scanning-Packages se utilizan para especificar los subconjuntos que se deben omitir durante el proceso de anotación. Todas las clases de los archivadores que se especifican mediante Ignore-Scanning-Archives se omiten durante el proceso de anotación. Todas las clases de los paquetes que se especifican mediante Ignore-Scanning-Packages también se omiten durante el proceso de anotación.
Las propiedades Include-Scanning-Archives e Include-Scanning-Packages se utilizan para especificar los subconjuntos de clases que se han de explorar durante el proceso de anotación. Cuando se especifica cualquier propiedad, solamente se explorarán aquellas clases que se hayan incluido; se omitirá el resto de clases.
Los valores de propiedad proporcionan un control tanto general como detallado sobre el ámbito de proceso de anotaciones, con Ignore-Scanning-Archives que ofrece un control más general que Ignore-Scanning-Packages; y, de igual modo, Include-Scanning-Archives proporciona un control más general que Include-Scanning-Packages.
>La sintaxis para las cuatro propiedades sigue el convenio de valores separados por comas. No se permite ningún comodín o expresión regular y los valores distinguen entre mayúsculas y minúsculas.
El uso de las propiedades de inclusión y exclusión a la vez no es habitual pero está admitido. Cuando se especifica una propiedad de inclusión con una propiedad de exclusión, se seleccionan las clases para procesarlas cuando se hallen en estado incluido y no excluido. Si se especifica Ignore-Scanning-Archives e Include-Scanning-Archives, una clase se explorará durante el proceso de anotación pero solamente si la clase se encuentra en un archivador que se haya especificado mediante Include-Scanning-Archives y no en un archivador que se haya especificado mediante Ignore-Scanning-Archives. Del mismo modo, si se especifican Ignore-Scanning-Archives e Include-Scanning-Packages, se explorará una clase durante el proceso de anotación pero solamente si la clase se encuentra en un paquete que se haya especificado mediante Include-Scanning-Packages y no en un archivador que se haya especificado mediante Ignore-Scanning-Packages.
Las opciones que se especifican utilizando el archivo amm.filter.properties son globales para el perfil. Todas las aplicaciones que detecten los procesos que inicie ese perfil utilizan las opciones especificadas. Las opciones que se especifican como propiedades del sistema son globales para el proceso en el que se han establecido las propiedades. Todas las aplicaciones que detecte el proceso utilizan las opciones especificadas.
- Aplicación (archivo EAR)
- Módulo (archivo WAR/RAR/JAR)
- Fragmento web (archivo JAR)
Los atributos de manifiesto que se especifican en varios ámbitos son acumulativos. Las opciones que se especifican utilizando amm.filter.properties, las propiedades del sistema y los atributos de manifiesto son acumulativos.
El conjunto de valores predeterminado puede ser cambiado por un administrador o aumentado realizando uno de los pasos siguientes.
Procedimiento
Qué hacer a continuación
Instale de nuevo la aplicación. Si el despliegue continúa siendo lento, especifique más módulos y paquetes Java a omitir.