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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage