CDI sucht nach impliziten Beans, wenn keine Datei beans.xml vorhanden ist

Mit der CDI Version 1.1-Spezifikation (Contexts and Dependency Injection, Kontext- und Abhängigkeitsinjektion) wurde ein Modus für die Erkennung impliziter Beans eingeführt, der zu Änderungen in Bezug auf das Verhalten und die Leistung gegenüber der CDI Version 1.0 von Java Platform Enterprise Edition (Java EE) 6 in WebSphere Application Server geführt hat.

Diese Regel markiert die Ordner WEB-INF und META-INF, wenn das Projekt keine Datei beans.xml enthält. Bei einer Umstellung von Java EE 6 CDI Version 1.0 auf Java EE 7 CDI Version 1.1 oder höher werden bei der Erkennung impliziter Beans alle WAR- und JAR-Dateien von der Laufzeitumgebung durchsucht, selbst wenn diese keine Datei beans.xml haben. Dies kann zu Leistungseinbußen bei der Bean-Erkennung führen, wenn Sie die cdi-1.2 Feature in Liberty.

Wenn in Java EE 7 keine Datei beans.xml definiert ist, sucht die Laufzeitumgebung automatisch nach Annotationen, die Beans definieren. Fügen Sie, wie im folgenden Beispiel dargestellt, eine Datei beans.xml hinzu und setzen Sie den Modus für die Erkennung von Beans auf none, um dieses Verhalten zu inaktivieren.


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

In Liberty können Sie dieses Verhalten ebenfalls inaktivieren, indem Sie die folgende Eigenschaft zur Datei server.xml hinzufügen.


<cdi12 enableImplicitBeanArchives="false"/>

In WebSphere Application Server Traditional kann dieses Verhalten wie folgt inaktiviert werden:

Weitere Informationen zum Definieren dieser Eigenschaften in WebSphere Traditional finden Sie unter Custom Properties for improving application startup in WebSphere Application Server.

Weitere Informationen zur CDI 1.2-Implementierung von Java EE 7 finden Sie unter Änderungen im Verhalten von Contexts and Dependency Injection zwischen Releases.