Analyses CDI pour recherche de beans implicites en l'absence de fichier beans.xml

La spécification Contexts and Dependency Injection (CDI) 1.1 a introduit le mode de reconnaissance de bean implicite, ce qui entraîne des changements de comportement et de performances par rapport à l'implémentation CDI 1.0 par Java Platform, Enterprise Edition (Java EE) 6 dans WebSphere Application Server.

Cette règle marque le dossier WEB-INF ou META-INF si le projet ne contient pas de fichier beans.xml. Lors du passage de Java EE 6 CDI 1.0 à Java EE 7 CDI 1.1 -ou version ultérieure), la reconnaissance de bean implicite entraîne que tous les fichiers WAR et JAR sont analysés par l'environnement d'exécution, même s'ils n'ont pas de fichier beans.xml. Cela peut entraîner une dégradation des performances de la reconnaissance de bean si vous activez la cdi-1.2 sur Liberty.

Dans Java EE 7, si aucun fichier beans.xml n'est défini, l'environnement d'exécution recherche automatiquement des annotations de définition de bean. Pour désactiver ce comportement, ajoutez un fichier beans.xml avec mode de reconnaissance de bean défini à 'none', comme illustré dans l'exemple suivant.


<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>

Dans Liberty, vous pouvez également désactiver ce comportement en ajoutant la propriété ci-dessous au fichier server.xml.


<cdi12 enableImplicitBeanArchives="false"/>

Dans WebSphere Application Server Traditional, ce comportement peut être désactivé d'une des manières suivantes :

Pour plus d'informations sur la définition de ces propriétés dans WebSphere Traditional, voir la documentation Custom Properties for improving application startup in WebSphere Application Server.

Pour plus d'informations sur l'implémentation Java EE 7 CDI 1.2, voir Changements de comportement dans Contexts and Dependency Injection 1.2.