2016-09-26 6 views
0

(Пожалуйста, будьте добры, это мои первые шаги в Java EE). Я работаю с Netbeans 8.1, развертывая модуль EJB на локальном сервере Glassfish. У меня есть GlassFish-resource.xml со следующим ресурсом определено:Java EE инъекция не работает на Glassfish

<jdbc-resource enabled="true" jndi-name="java:app/jdbc/myDataSource" 

И у меня есть класс DAO, где я пытаюсь внедрить этот ресурс

@Named 
public class SimpleDal { 
    @Resource(name = "jdbc/myDataSource", lookup = "java:app/jdbc/myDataSource") 
    private static DataSource ds ; 

Я попробовал несколько способов сделайте эту работу, но я всегда получаю NULL в переменной ds. Я отлаживал и запрашивал контекст, и я всегда получаю имя java:app/jdbc/myDataSource не найден. Возможно, я ничего не делаю правильно, это мои первые шаги на Java EE (я всегда разрабатывал для PHP). Может ли кто-нибудь направить меня, чтобы не терять больше времени? Спасибо

Примечание: Я добавляю аннотацию @Named к классу SimpleDal, потому что я где-то читал, что для того, чтобы Инъекция работала, я должен быть в Bean.

+0

В CDI редко разрешено использование в статических полях, если оно не указано в документации. – thatsIch

ответ

0

Итак, через некоторое время я наконец узнал, что инъекция не работает надежно в статических полях (по крайней мере, на моей установке). Изменено поле в поле экземпляра, и оно сработало. Публикация этого ответа для всех, кто сталкивается с такой же ситуацией

Смежные вопросы