Kann ich die CDI-Konstruktor-Injektion für EJBs?

Möchte ich etwas wie das hier tun:

@Stateless
public class GreeterEjb {


    private final Greeter greeter;


    @Inject
    public GreeterEjb(Greeter greeter) {
        this.greeter = greeter;
    }


    public String greet() {
        return greeter.greet();
    }
}

Versuchte ich es mit Glassfish 3.1.1 und JBoss 7.0.2 mit gemischten Ergebnissen. Unter Umständen funktioniert es, unter anderen Umständen nicht.
Sehen dieser thread im forum Glassfisch, wenn Sie an den details interessiert sind.

Den EJB 3.1 SpezifikationAbschnitt 4.9.2 Bean-Klassen sagt:

Die Klasse muss über einen öffentlichen Konstruktor ohne Parameter.

Das klingt wie der constructor injection ist nicht erlaubt, für die EJBs.

ABER die Die CDI-spec sagt am Anfang von Kapitel 3, dass die Session Beans werden unterstützt durch die CDI. Abschnitt 3.2 spricht dann ausführlich über CDI und EJB, aber nie erwähnt nichts über Konstruktor-injection nicht funktioniert. Das macht mich denken, dass es erlaubt sein sollte.

So, die Spezifikationen erlauben CDI Konstruktor-Injektion für EJBs oder nicht?

InformationsquelleAutor der Frage Arend v. Reinersdorff | 2012-02-07

Schreibe einen Kommentar