EJB3.1 - можно запустить цепочку впрыска @EJB без поиска JNDI? - PullRequest
2 голосов
/ 29 декабря 2011

Я использую EJB3.1, развернутый в JBoss AS 5.1, поэтому я использую инъекцию @EJB.Он прекрасно работает при вызове из другого EJB.Как этот бин:

@Stateless (mappedName = "daos/MyDao")
public class MyDAO implements MyDaoRemote {

@PersistenceContext(unitName = "myEm")
private EntityManager em;

, который вводится в этот другой бин

@Stateless(mappedName = "handler/MyHandler")
public class MyHandler implements MyHandlerRemote {

@EJB(mappedName = "daos/MyDao")
private MyDaoRemote myDao;

Однако мое приложение запускается из POJO.Я не думаю, что вы можете использовать инъекцию @EJB вне EJB ... Итак, возможно ли получить MyHandler без использования поиска JNDI?Этот код работает:

return (MyHandlerRemote) new InitialContext().lookup("handler/MyHandler");

, но я бы хотел избежать этого поиска.В Seam и Spring кажется, что сканирование классов для аннотаций проще.

Мне, вероятно, НЕ НУЖНО внедрение @EJB, но мне нравится, когда контейнер управляет для меня PersistenceContext и автоматическим подключением.

Похоже, что Weld может помочь, но я не думаю, что он будет работать в JBoss AS 5.1, как мог бы Spring, но кажется, что EJB должна быть отправной точкой без поиска JNDI.

Заранее спасибо.

1 Ответ

3 голосов
/ 29 декабря 2011

Вы можете использовать Seam для внедрения EJB в POJO, работающих под JBoss AS 5.1, без необходимости делать поиск JNDI - вместо этого, используя аннотацию @In Seam.

...