La especificación CDI (Contexts and Dependency Injection) 1.1 introdujo la modalidad de descubrimiento de beans implícitos, lo que da lugar a cambios de comportamiento y rendimiento de la implementación de Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 en WebSphere Application Server. Un bean implícito es cualquier archivo que contiene una o más clases de bean con una anotación que define a un bean o uno o varios beans de sesión.
Al mover de Java EE 6 CDI 1.0 a Java EE 7 CDI 1.1 o posterior, el descubrimiento de beans implícitos da como resultados la exploración por parte del tiempo de ejecución de todos los archivos WAR y JAR, incluso si no tienen un archivo beans.xml. Esta exploración es un cambio de comportamiento con respecto a Java EE 6 CDI 1.0, donde la falta de un archivo beans.xml impedía la exploración de archivos en la aplicación.
Esta regla marca las siguientes anotaciones que definen beans y los beans de sesión EJB (Enterprise JavaBeans) (EJB) en todos los archivos WAR y JAR que no tienen un archivo beans.xml.
El explorador de aplicación binaria marca las clases de anotación anotadas como @NormalScope. A diferencia del explorador de origen de aplicación basado en Eclipse, no detecta las clases que se anotan con una anotación de tipo de ámbito normal. Estas anotaciones pueden marcarse fuera del ámbito de los archivos beans.xml que las utilizan, tanto de forma explícita como implícita.
Para inhabilitar este cambio de comportamiento de CDI durante el tiempo de ejecución a nivel de WAR o JAR, añada un archivo beans.xml con modalidad de descubrimiento de bean establecida en none, tal como se muestra en el ejemplo siguiente.
|
En Liberty, también puede inhabilitar este comportamiento añadiendo la siguiente propiedad en el archivo server.xml.
|
Para obtener más información sobre la implementación de Java EE 7 CDI 1.2, consulte Cambios de comportamiento de Contexts and Dependency Injection 1.2.