Procházení CDI pro implicitní objekty bean v případě, že neexistuje soubor beans.xml

Specifikace CDI (Contexts and Dependency Injection) 1.1 zavedla implicitní režim zjišťování objektů typu bean, což vedlo ke změnám chování a výkonu z implementace Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 na serveru WebSphere Application Server.

Toto pravidlo značí složku WEB-INF nebo META-INF, pokud projekt neobsahuje soubor beans.xml. Při přechodu z formátu Java EE 6, CDI 1.0 na Java EE 7 CDI 1.1 nebo novější jsou výsledkem zjišťování implicitních objektů bean všechny soubory WAR a JAR procházené běhovým prostředím, a to i v případě, že nemají soubor beans.xml. To může vést k poklesu výkonu zjišťování objektů typu bean, pokud povolíte cdi-1.2 funkce na Liberty.

V prostředí Java EE 7, není-li definován soubor beans.xml, vyhledá běhové prostředí automaticky anotace definující objekty typu bean. Chcete-li toto chování zakázat, přidejte soubor beans.xml s režimem zjišťování objektu typu bean nastaveným na hodnotu none, jak je uvedeno v následujícím příkladu.


<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 serveru Liberty můžete toto chování také zakázat přidáním následující vlastnosti do souboru server.xml.


<cdi12 enableImplicitBeanArchives="false"/>

Na serveru WebSphere Application Server Traditional lze toto chování zakázat následujícími způsoby:

Další informace o nastavení těchto vlastností na serveru WebSphere traditional viz dokumentace Přizpůsobené vlastnosti pro zlepšení spuštění aplikace na serveru WebSphere Application Server.

Další informace o implementaci Java EE 7 CDI 1.2 viz Změny chování Contexts and Dependency Injection 1.2.