Această regulă semnalează clase care sunt adnotate cu ambele adnotări @Specializes şi @Alternative.
Dacă clasa este referită de o clasă dintr-un alt modul, clasa nu este injectată în alt modul dacă nu este listată ca o <alternative> în META-INF/beans.xml al altui modul.
În următorul exemplu, clasa AltClass3 este listată în fişierul jar2/META-INF/beans.xml
ca <alternative>. Clasa nu este listată ca <alternative> în fişierul jar1/META-INF/beans.xml.
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 ca <alternative> în fişierul jar1/META-INF/beans.xmlPentru informaţii suplimentare despre implementarea Java Platform, Enterprise Edition (Java EE) 7 CDI 1.2, vedeţi Contexts and Dependency Injection 1.2 behavior changes.