2016-12-16 7 views
0

У меня возникают проблемы с инъекцией зависимостей в пакете.Java EE - инъекция зависимостей в пакете

@Named 
public class SimpleBatchlet extends AbstractBatchlet { 
    @Inject 
    protected StorageService storageService; 

    ... 

    public String process() throws Exception { 
    storageService.doSomething(); // this throws a null pointer exception 
    } 
} 

@Named 
public class LocalFileStorageService implements StorageService { 
    public void doSomething() { 

    } 
} 

Я попытался положить beans.xml как в META-INF и WEB-INF и удаления его, все без толку. Я также попытался изменить области бобах на одиночные игры и т. Д. Я вызываю/начинаю пакетное задание с помощью аннотации @Schedule на методе, который использует BatchRuntime для запуска задания.

Должно быть, мне не хватает чего-то простого, поскольку я знаю, что это должно сработать. Фактический объем компонентов, которые я буду использовать, может потребоваться изменить, но точка, которую я пытаюсь сделать, заключается в том, что я не верю, что область видимости - проблема, но другая проблема с конфигурацией.

Следует также отметить, что у меня только 1 реализация StorageService.

+0

Непонятно из вашего вопроса, что работает, а что нет. Может быть, вы должны перефразировать его и предоставить некоторый пример кода –

+0

, но, надеюсь, это поможет. – Walter

ответ

0

Не ясно, что на самом деле ваша проблема (NPE на впрыскиваемом CDI бобе?), Но аннотирования вашего Batchlet @Dependent должна решить проблему:

@Named 
@Dependent 
public class SimpleBatchlet extends AbstractBatchlet { 
    @Inject 
    protected StorageService storageService; 
} 

Batchlet нужно быть @Named и @Dependent для интеграции с КДИ.