Această regulă semnalează clase care sunt adnotate cu ambele adnotări @Specializes şi @Alternative.
Dacă clasa este menționată de o clasă din alt modul, clasa nu este injectată în celălalt modul cu excepția cazului în care este listată în <alternative> în META-INF/beans.xml al celuilalt modul.
În exemplul următor, clasa AltClass3 este listată în fișierul jar2/META-INF/beans.xml fișier în <alternatives>. Clasa nu este listată în <alternatives> în fișierul jar1/META-INF/beans.xml fișier.
WEB-INF/lib/jar1:
Class1 {
@Inject @SomeQualifer String foo;
}
WEB-INF/lib/jar2:
Class2 {
@Produces @SomeQualifer String doFoo() { ... }
}
@Alternative @Specializes AltClass3 extends Class2 {
@Produces @SomeQualifer String doFoo() { ... }
}
În implementarea CDI (Contexts and Dependency Injection) 1.0, Class2 este injectată şi utilizată ca un producător pentru Class1.foo.
În implementarea CDI 1.2, Class2 nu este injectată şi
aplicaţia nu porneşte, indicând că nu poate fi găsit niciun
producător pentru Class1.foo.
Puteţi rezolva problema în două moduri:
@Specializes din AltClass3AltClass3 în <alternatives> din fișierul jar1/META-INF/beans.xml fișierPentru informaţii suplimentare despre implementarea Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2, vedeţi Modificări de comportament CDI (Contexts and Dependency Injection) 1.2.