Я хочу сделать что-то вроде этого:
@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 или нет?