2012-01-13 4 views
2

Я пытаюсь использовать CDI, но инъекция не работает, экземпляр объекта не создан, и я получаю нулевой указатель на это: greetObj.greet («Champion»);CDI @inject null pointer

Я пытаюсь Подайте фасоль в качестве EJB: моего EJB:

public @Stateless class CDIEjbBean implements CDIEjb { 

    @Inject Greeting greetObj; 
    public String getGreeting() { 
     return greetObj.greet("Champion"); 
    } 
} 

и приветствие объектов & отборочных

@Default 
public class Greeting { 

    public String greet(String name) { 
     return "Hello, " + name + "."; 
    } 
} 

@Qualifier 
@Retention(RUNTIME) 
@Target({TYPE, METHOD, FIELD, PARAMETER}) 
public @interface Informal {} 

@Informal 
public class InformalGreeting extends Greeting{ 
    public String greet(String name) { 
     return "Hi, " + name + "."; 
    } 
} 

Любой идею? Я на JDK6_21 GlassFish 3,1

Спасибо

Алексис

+4

У вас есть пустой beans.xml в вашем модуле? – Perception

+8

хорошо, я пропустил первую строку в учебнике JEE6: > Настройка приложения CDI Приложение, использующее CDI, должно иметь файл > beans.xml. Файл может быть полностью пустым (он имеет контент > только в определенных ограниченных ситуациях), но он должен присутствовать. Для веб-приложения > файл beans.xml должен находиться в каталоге WEB-INF. Для > EJB-модулей или JAR-файлов файл beans.xml должен находиться в каталоге META-INF >. Даже при использовании квалификаторов. Спасибо вам все равно – bodtx

+0

Нет проблем, рад, что исправлены проблемы. – Perception

ответ

2

Я пропустил первую строку на JEE6 учебник:> Конфигурирование CDI Применение Приложение, которое использует CDI должен иметь файл с именем бобы .xml.