Я использую 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.
Заранее спасибо.