Ось хороша дискусія з цієї теми. Гевін Кінг рекомендує @Inject over @EJB для не віддалених EJB.
http://www.seamframework.org/107780.lace
або
https://web.archive.org/web/20140812065624/http://www.seamframework.org/107780.lace
Re: Ін'єкції за допомогою @EJB або @Inject?
- Листопад 2009, 20:48 Америка / New_York | Посилання Гевін Кінг
Ця помилка дуже дивна, оскільки місцеві посилання EJB завжди повинні бути серійними. Баг у скляній рибі, мабуть?
В основному, @Inject завжди краще, оскільки:
it is more typesafe,
it supports @Alternatives, and
it is aware of the scope of the injected object.
Я не рекомендую використовувати @EJB за винятком декларування посилань на віддалені EJB.
і
Re: Ін'єкції за допомогою @EJB або @Inject?
Листопад 2009, 17:42 Америка / New_York | Посилання Гевін Кінг
Чи означає це @EJB краще з віддаленими EJB?
Для віддаленого EJB ми не можемо оголосити метадані, як кваліфікатори, @Alternative тощо, для класу bean, оскільки клієнт просто не матиме доступу до цих метаданих. Крім того, необхідно вказати деякі додаткові метадані, які нам не потрібні для локального випадку (глобальна назва JNDI). Тому все це потрібно подати кудись інше: а саме декларацію @Produces.
@EJB
працює циркулярна ін'єкція (один однотонний та інший квасоля потребують посилання один на одного)? (з посиланням на мою відповідь нижче - я не впевнений, чи правильно роблю, перейшовши на@EJB
)