2013-06-28 4 views
3

Возможно ли внедрить управляемый компонент JSF в EJB? Я ввел JSF Managed Beans в другой управляемый компонент JSF как @ManagedProperty. Но когда я делаю то же самое с EJB, я получаю исключение с нулевой точкой.Внедрение управляемого JSF компонента в EJB

+1

Зачем вам это нужно? В чем именно проблема, о которой вы неправильно подумали, что это будет правильным решением? Вместо этого спросите и уточните конкретное функциональное требование. – BalusC

+0

Я ошибочно включил бизнес-логику в JSF Managed Bean. Как вы предположили, я буду подвергать сомнению так, чтобы бизнес-логика в методах управляемого JAF Managed Bean, необходимых EJB, переключилась на новый EJB. Спасибо. Но как я могу принять это как ответ? –

ответ

9

Нет, это невозможно. @ManagedProperty работает только в классах @ManagedBean (только для JSF-бобин). Вы можете использовать только @EJB или @Inject, чтобы ввести еще один EJB или управляемый бин CDI (класс @Named).

Тем не менее, дизайн не имеет смысла вводить внешний класс, например, JSF или управляемый CDI компонент в классе бизнес-услуг, например EJB. EJB должен быть сконструирован таким образом, чтобы без изменений можно было повторно использовать совершенно другой интерфейс, например, веб-сервис JAX-RS или даже простой ванильный сервлет. У EJB не должно быть абсолютно никаких javax.faces.* импорта/зависимостей (например, у него не должно быть javax.ws.rs.* или javax.servlet.*).

Если вы собираетесь передавать данные из управляемого компонента JSF в EJB, просто передайте его как аргумент метода. Такие данные обычно имеют аромат JPA @Entity или, по меньшей мере, ключевое слово ID /, которое возвращает объект.

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