Cambios en el comportamiento de Contexts and Dependency Injection 1.2
La implementación de CDI (Contexts and Dependency Injection) 1.2 contiene cambios de comportamiento que pueden provocar que una aplicación que se ha migrado desde CDI 1.0 se comporte de forma diferente o falle en CDI 1.2.
Puede elegir entre las implementaciones de las características CDI 1.0 y CDI 1.2 para cada instancia de servidor, teniendo en cuenta los cambios de comportamiento. Si el comportamiento necesario sólo se encuentra en la característica CDI 1.2, debe utilizar la característica CDI 1.2. Si una aplicación existente va a verse afectada negativamente por cambios de comportamiento en la característica CDI 1.2, utilizando la característica CDI 1.0 se conserva el comportamiento existente para dicha aplicación. No es posible utilizar las características, CDI 1.0 y CDI 1.2, ya que estas características no son compatibles. Si configura ambas características, el servidor genera un error.
La característica CDI 1.0 está basada en la implementación OpenWebBeans de Apache de CDI. La característica CDI 1.2 está basada en la implementación Weld de CDI. Los cambios de comportamiento introducidos se deben a las diferencias entre las dos implementaciones.
El CID de ID de conversación
En la implementación de CDI 1.0, el CID es exclusivo de forma global. En CDI 1.2 es exclusivo por sesión HTTP. Este comportamiento está en consonancia con la especificación CDI y es un convenio elegido por Weld. Para obtener un CID exclusivo globalmente, el CID debe especificarse al inicio de la conversación invocando Conversation.begin.
Referencia a esquemas en el archivo beans.xml
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"
Si utiliza un esquema no válido, el servidor da un error de excepción. Puede desactivar la validación del archivo beans.xml estableciendo la propiedad org.jboss.weld.xml.disableValidating=true jvm de JVM, que también impide que se genere el error. Si el archivo beans.xml especifica decoradores o interceptores, se debe utilizar un esquema válido; de lo contrario, no se crean correctamente instancias de los decoradores e interceptores.Archivos de archivado de beans implícitos
La implementación CDI 1.2 define dos tipos de archivos de archivados de beans: explícito e implícito.
- con un número de versión 1.1 (o posterior) y con el valor de bean-discovery-mode establecido en all
- sin ningún número de versión
- es un archivo vacío
Un archivo de archivado de bean implícito es cualquier otro archivo de archivado que contiene una o varias clases de beans con una anotación de definición de bean, tal como se ha definido en la especificación de la sección 2.5.1 "Anotaciones de definición de beans", o uno o varios beans de sesión. Consulte la especificación Contexts and Dependency Injection para la plataforma Java™ EE. .
<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="all"
version="1.1">
<cdi12 enableImplicitBeanArchives="false"/>
Si se establece esta propiedad en false se impide que los archivos de archivado que no tengan archivos beans.xml se conviertan en archivos de archivado de beans implícitos.El establecimiento de esta propiedad en false proporciona un rendimiento mejorado en tiempo de inicio.