injectionPoint.getBean () gibt null zurück, wenn es sich bei der Bean um eine EJB-Bean in Java EE 7 (CDI 1.1) handelt.
Ich möchte eine Bean von der Producer-Methode erhalten, um deren Eigenschaften zu lesen. In einigen Szenarien ist die Bean einEJB Singleton
Bohne
Ich habe meinen Code vereinfacht, um mich auf das Problem zu konzentrieren.
Mein einfacher Qualifier:
@Qualifier
@Retention(RUNTIME)
@Target({TYPE, METHOD, FIELD, PARAMETER})
public @interface InjectMe {}
Einfacher Produzent:
@Dependent
public class SimpleProducer {
@Produces
@InjectMe
public String getInjectMe(InjectionPoint ip) {
// ip.getBean() returns null for some reason
return "ip=" + ip + ", bean=" + ip.getBean();
}
}
EJB (Singleton):
@Singleton
@Startup
public class SimpleSingleton {
@Inject
@InjectMe
private String injectMe;
@PostConstruct
public void init() {
System.out.println(injectMe);
}
}
Console-Ausgabe:
Info: ip = [BackedAnnotatedField] @Inject @InjectMe private com.test.ejb.SimpleSingleton.injectMe,bean=null
Wenn ich ändereSingleton
Bohne zuCDI
Bean alles funktioniert gut ip.getBean()
gibt nicht null zurück). Es funktionierte auch inJava EE 6
sogar mitSingleton
Bohne, aber es funktioniert nicht inJava EE 7
. Ich verwende den Glassfish 4-Anwendungsserver.
Ist dieses Verhalten irgendwo angegeben?