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 escáner de aplicaciones binarias marca las clases anotadas con @NormalScope.
Estas anotaciones pueden detectarse aunque aparezcan fuera del contexto de la beans.xml que las utilizan explícita o implícitamente.
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.
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
bean-discovery-mode="none" version="1.1">
</beans>
En Liberty, también puede inhabilitar este comportamiento añadiendo la siguiente propiedad en el archivo server.xml.
<cdi12 enableImplicitBeanArchives="false"/>
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.