Skanowania CDI w poszukiwaniu niejawnych komponentów bean, gdy nie ma pliku beans.xml

W specyfikacji CDI (Contexts and Dependency Injection) w wersji 1.1 wprowadzono tryb wykrywania niejawnych komponentów bean, który powoduje zmiany działania i wydajności w stosunku do implementacji specyfikacji CDI 1.0 na platformie Java Platform, Enterprise Edition (Java EE) 6 używanej na serwerze WebSphere Application Server.

Ta reguła powoduje oznaczenie folderu WEB-INF lub META-INF, jeśli projekt nie zawiera pliku beans.xml. Przy przechodzeniu ze środowiska Java EE 6 CDI 1.0 do środowiska Java EE 7 CDI 1.1 lub nowszego wykrywanie niejawnych komponentów bean skutkuje skanowaniem wszystkich plików WAR i JAR w czasie wykonywania, nawet jeśli nie mają one pliku beans.xml. Może to prowadzić do obniżenia wydajności wykrywania komponentów bean, jeśli zostanie włączone cdi-1.2 Liberty.

W środowisku Java EE 7, w którym nie zdefiniowano pliku beans.xml, środowisko wykonawcze przeprowadza automatyczne skanowanie w poszukiwaniu adnotacji definiujących komponenty bean. Aby wyłączyć to działanie, należy dodać plik beans.xml z trybem wykrywania komponentów bean ustawionym na wartość none, jak to pokazano w poniższym przykładzie.


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

Na serwerze Liberty można również wyłączyć to działanie, dodając następującą właściwość do pliku server.xml.


<cdi12 enableImplicitBeanArchives="false"/>

W przypadku serwera WebSphere Application Server traditional działanie to można wyłączyć w następujące sposoby:

Więcej informacji na temat ustawiania tych właściwości na serwerze WebSphere traditional można znaleźć w dokumentacji Właściwości niestandardowe usprawniające uruchamianie aplikacji na serwerze WebSphere Application Server.

Więcej informacji na temat implementacji Java EE 7 CDI 1.2 można znaleźć na stronie Zmiany w działaniu specyfikacji Contexts and Dependency Injection 1.2.