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. Niejawny komponent bean to archiwum zawierające jedną lub więcej klas komponentów bean z adnotacją definiującą komponent bean albo z jednym lub większą liczbę komponentów bean sesji.
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. To skanowanie to zmiana działania w stosunku do wersji Java EE 6 CDI 1.0, w której brak pliku beans.xml zapobiegał skanowaniu archiwów w aplikacji.
Ta reguła powoduje oznaczenie poniższych adnotacji definiujących komponenty bean i komponenty EJB (Enterprise JavaBeans) sesji we wszystkich plikach WAR i JAR, dla których nie istnieje plik beans.xml.
Skaner aplikacji binarnych oznacza klasy adnotacji, które są opatrzone adnotacjami @NormalScope. W przeciwieństwie do skanera źródła aplikacji opartego na platformie Eclipse nie wykrywa on klas, które są opatrzone adnotacjami typu o zasięgu normalnym. Adnotacje te mogą być oznaczane poza zasięgiem plików beans.xml, które korzystają z nich w sposób jawny albo niejawny.
Aby wyłączyć tę zmianę działania specyfikacji CDI w czasie wykonywania na poziomie plików WAR lub JAR, należy dodać plik beans.xml z trybem wykrywania komponentów bean ustawionym na wartość none, jak pokazano w poniższym przykładzie.
|
Na serwerze Liberty można również wyłączyć to działanie, dodając następującą właściwość do pliku server.xml.
|
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.