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.
Mientras que CDI 1.0 está basado en la implementación de CDI para Apache OpenWebBeans, CDI 1.2 está basado en la implementación de Weld. Estos cambios de comportamiento reflejan las diferencias en 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, el CID es exclusivo para cada sesión HTTP. Este comportamiento está en consonancia con la especificación CDI y es implementado por el Weld. Para obtener un CID exclusivo globalmente, el CID se debe especificar 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 emite un error de excepción.
Especifique org.jboss.weld.xml.disableValidating=true para
desactivar la validación del archivo beans.xml e
impedir 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 de CDI 1.2 define dos tipos diferentes de archivos de archivado de beans: explícitos e implícitos.
- Un número de versión 1.1 (o posterior), con la modalidad de descubrimiento de beans establecida en all
- Ningún número de versión
- Un archivo vacío
Un archivo de archivado de beans 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"
</beans>
Este nuevo tipo de archivo de archivado de beans puede dar como resultado un archivo de archivado que no está pensado para ser un archivo de archivado de beans CDI, pero pasa a ser un archivo de archivado de beans implícito en la implementación de CDI 1.2. Para impedir este comportamiento, puede añadir un archivo beans.xml con la modalidad de descubrimiento de beans establecida en none para impedir que el archivo de archivado sea un archivo de archivado de beans. Como solución alternativa, establezca la propiedad del sistema, com.ibm.ws.cdi.enableImplicitBeanArchives en false. Establecer esta propiedad en false impide que los archivos de archivado sin archivos beans.xml pasen a ser archivos de archivado de beans implícitos y reduce el tiempo de arranque. Para conocer cómo establecer esta propiedad del sistema, consulte Valores de máquina virtual Java.
Interceptores de ciclo de vida
@InterceptorBinding
@Retention( RetentionPolicy.RUNTIME )
@Target( {ElementType.TYPE, ElementType.METHOD} )
public @interface SFCDIInterceptorBinding {}