A CDI felismeri az implicit komponens archívumokat

A Kontextus és függőség beszúrás (CDI) 1.1 specifikáció implicit komponens feltérképezési módot vezetett be, ami viselkedés- és teljesítményváltozásokat eredményezett a Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 megvalósításhoz képest a WebSphere Application Server kiszolgálón. Egy implicit komponens bármilyen archívum lehet, amely komponens osztály(oka)t tartalmaz egy komponenst meghatározó annotációval vagy munkamenet komponensekkel.

Amikor áttér a Java EE 6 CDI 1.0 változatról a Java EE 7 CDI 1.1 vagy újabb változatra, az implicit komponens feltérképezés azt eredményezi, hogy a futási időben elemzett összes WAR és JAR fájl elemezve lesz, még akkor is, ha nem tartalmaznak egy beans.xml fájlt. Ez a keresés egy viselkedésváltozás a Java EE 6 CDI 1.0 változathoz képest, ahol egy hiányzó beans.xml fájl megakadályozta az alkalmazásban lévő archívumok keresését.

Ez a szabály megjelöli a következő komponenst meghatározó annotációkat és Enterprise JavaBeans (EJB) munkamenet komponenseket az összes WAR és JAR fájlban, amely nem tartalmaz egy beans.xml fájlt.

A bináris alkalmazás-olvasó megjelöli azokat az osztályokat, amelyek a következő megjegyzésekkel vannak ellátva @NormalScope. Ezek a megjegyzések még akkor is észlelhetők, ha a kontextuson kívül jelennek meg a beans.xml fájlokban, amelyek explicit vagy implicit módon használják őket.

Ezt a CDI viselkedésváltozást futási időben WAR vagy JAR szinten úgy tilthatja le, hogy hozzáad egy beans.xml fájlt egy none értékre beállított bean-discovery-mode elemmel, ahogy a következő példában látható.


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

Liberty kiszolgálón ezt a viselkedést úgy is letilthatja, hogy hozzáadja a következő tulajdonságot a server.xml fájlhoz.


<cdi12 enableImplicitBeanArchives="false"/>

A Java EE 7 CDI 1.2 megvalósítással kapcsolatos további információkért tekintse meg a következőt: Contexts and Dependency Injection 1.2 viselkedésváltozásai.