В Java EE 6 существует некоторое перекрытие между различными управляемыми bean-компонентами: управляемые bean-компоненты JSF (@ManagedBean), управляемые bean-компоненты CDI (@Named) и EJB-компоненты (@Stateless, @Statefull, @Singleton).
В слое вида я не вижу особых преимуществ для использования с @ManagedBean.Вариант CDI @Named, по-видимому, способен делать то же самое и больше, например, предоставить вам доступ к области преобразования.
В настоящее время кажется, что в настоящее время компонентная модель EJB также будет модифицирована какнабор аннотаций CDI.На это часто намекает особенно экспертная группа Реза Рахман.См., Например, Внедрение зависимостей в Java EE 6 - Часть 1
Пока этого не произошло, поэтому EJB-бины остаются самым простым местом для размещения бизнес-логики, особенно когда JPA используется дляпостоянство.
Тем не менее, независимо от того, получит ли CDI возможности EJB, ИМХО, все еще рекомендуется использовать отдельный компонент для концепции «поддерживающего компонента» и отдельный компонент для «бизнес-логики».
Базовый компонент может быть очень тонким, просто содержит некоторые ссылки на объекты и службы модели (EJB).Методы действия компонента поддержки могут делегировать почти напрямую службам, но их дополнительная ценность заключается в предоставлении пользователю обратной связи (добавление FacesMessages при успехе или неудаче) и выполнении небольших изменений пользовательского интерфейса (например, установка логического значения в значение false, при котором отображался некоторый диалог).
Службы (бизнес-логика) не должны ничего знать о какой-либо конкретной презентации.Они должны одинаково хорошо использоваться с компонентами поддержки JSF, JAX-RS, сервлетами, автономными удаленными клиентами Java SE или чем-то еще.
Даже если все бины станут бобами CDI, это не изменит этого основного разделения ответственности.