Specificaţia CDI (Contexts and Dependency Injection) 1.1 introduce modul de descoperire bean implicit, având ca rezultat modificări de comportament şi performanţă de la implementarea Java Platform, Enterprise Edition (Java EE) 6 CDI 1.0 în WebSphere Application Server. Un bean implicit este o arhivă care conţine una sau mai multe clase de bean cu o adnotare de definire bean (bean-defining) sau cu unul sau mai multe bean-uri sesiune.
Când se mută de la Java EE 6 CDI 1.0 la Java EE 7 CDI 1.1 sau ulterior, descoperirea bean-ului implicit are ca rezultat scanarea de către runtime a tuturor fişierelor JAR şi WAR, chiar dacă acestea nu au un fişier beans.xml. Această scanare este o modificare de comportament de la Java EE 6 CDI 1.0, unde un fişier lipsă beans.xml ar împiedica scanarea arhivelor din aplicaţie.
Această regulă semnalează următoarele adnotări bean-defining şi bean-uri sesiune EJB (Enterprise JavaBeans) în toate fişierele JAR şi WAR care nu au un fişier beans.xml.
Scanerul aplicaţiei binare semnalează clasele de adnotare care sunt
adnotate ca
@NormalScope. Spre deosebire de scanerul de sursă aplicaţie bazat pe Eclipse, nu
detectează clase care sunt adnotate cu o adnotare de
tip domeniu de aplicare (scope) normală. Aceste adnotări ar putea fi semnalate afară din domeniul de aplicare al fişierelor beans.xml
care le folosesc explicit şi implicit.
Pentru a dezactiva această schimbare de comportament CDI în timpul rulării la nivel JAR sau WAR, adăugaţi un fişier beans.xml cu modul de descoperire bean setat la none, după cum se arată în următorul exemplu.
|
Pe Liberty, puteţi dezactiva de asemenea acest comportament prin adăugarea următoarei proprietăţi la fişierul server.xml.
|
Pentru informaţii suplimentare despre implementarea Java EE 7 CDI 1.2, vedeţi Contexts and Dependency Injection 1.2 behavior changes.