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. Implicitní objekt typu bean je libovolný archiv, který obsahuje jednu nebo několik tříd objektů typu bean s anotací definující objekt typu bean nebo s jedním či více objekty session bean.
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. Toto procházení představuje změnu chování z prostředí Java EE 6 CDI 1.0, kde chybí soubor beans.xml, který zabrání procházení archivů v aplikaci.
Toto pravidlo značí následující anotace definující objekt typu bean a objekty Enterprise JavaBeans (EJB) session bean ve všech souborech WAR a JAR, které nemají soubor beans.xml.
Skener binárních aplikací označuje třídy, které jsou anotovány pomocí příznaku @NormalScope.
Tyto anotace mohou být zjištěny, i když se jedná o se objeví mimo kontext beans.xml které je explicitně nebo implicitně používají.
Chcete-li tuto změnu chování CDI zakázat za běhu na úrovni WAR nebo JAR, 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"/>
Další informace o implementaci Java EE 7 CDI 1.2 viz Změny chování Contexts and Dependency Injection 1.2.