Я хочу сделать что-то вроде этого:Могу ли я использовать инъекцию конструктора 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 со смешанными результатами. При некоторых обстоятельствах это работает, при других обстоятельствах это не так. См. this thread in the Glassfisch forum, если вас интересуют детали.
EJB 3.1 spec В, раздел 4.9.2 Бобовые Классы говорит:
Класс должен иметь открытый конструктор, который не принимает никаких параметров.
Это похоже на то, что для EJB не допускается впрыск конструктора.
BUT CDI spec В начале раздела 3 говорится, что Session Beans поддерживается CDI. В разделе 3.2 подробно рассказывается о CDI и EJB, но никогда не упоминает ничего о том, что инъекция конструктора не работает. Это заставляет меня думать, что это должно быть разрешено.
Значит, спецификации разрешают внедрение конструктора конструктора CDI для EJB или нет?
Whey Вы хотите это сделать? Почему не нормальная инъекция? – Santosh
Вы пробовали добавить конструктор no-args, а также – Kris
@Kris Да. С дополнительным конструктором no-args он работает. Который я нахожу очень странным. –