Могу ли я использовать внедрение конструктора CDI для EJB?

Я хочу сделать что-то вроде этого:

@Stateless
public class GreeterEjb {


    private final Greeter greeter;


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


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

Я пробовал это с Glassfish 3.1.1 и JBoss 7.0.2 со смешанными результатами. В одних обстоятельствах это работает, в других - нет. См. эту ветку на форуме Glassfisch , если вас интересуют подробности.

Спецификация EJB 3.1 , раздел 4.9.2 Классы компонентов гласит:

Класс должен иметь открытый конструктор, не принимающий параметров.

Похоже, внедрение конструктора не разрешено для EJB.

НО спецификация CDI говорит в начале раздела 3, что сессионные компоненты поддерживаются CDI. Затем в разделе 3.2 подробно рассказывается о CDI и EJB, но ничего не упоминается о том, что внедрение конструктора не работает. Это заставляет меня думать, что это должно быть разрешено.

Итак, допускают ли спецификации внедрение конструктора CDI для EJB-компонентов или нет?

16
задан Arend v. Reinersdorff 7 February 2012 в 09:12
поделиться