Внедрение ресурса в локальный EJB без сохранения состояния - PullRequest
0 голосов
/ 10 августа 2011

У меня есть интерфейс @Local с реализацией @Stateless.

На реализации находится @Resource (mappedName = "java: / XXMail") javax.mail.Session.

Он остается нулевым и не вводится, но поиск JNDI через InitialContext работает нормально.

Есть идеи, что я могу проверить или как я могу это отладить?Некоторые из нас какое-то время обливались этим без какой-либо удачи.Извините, я не могу опубликовать сам код, поскольку он находится в закрытой сети.

1 Ответ

0 голосов
/ 01 марта 2018

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

ObjectBean obj = new ObjectBean();

Это не вызовет CDI, и поэтому все аннотированные ресурсы будут нуль .Использование интерфейса вместо поиска через JNDI или аннотированный ресурс решит проблему:

ObjectBeanInterface obj = new InitialContext().lookup("java:module/ObjectBean!org.mycompany.ObjectBeanInterface");
...