2012-06-25 4 views
1

У меня есть несколько вопросов по различным вариантам и рекомендациям при использовании JSF с EJB3.1. Ментальная модель, которую я имею, учитывая множество вариантов и доступных комбинаций, далека от ясности, поэтому некоторые вопросы могут не иметь смысла.JSF/Facelets being beans и EJB3

JSF/Facelets ссылочного базовых компонентов (я использую термин «резервного боб» для фасоли, свойства которых записываются или считываются из Facelets страниц) с помощью EL кода, который является агностиком, как к реальным аннотациям, используемых в классах боба (javax.faces.bean. * или javax.enterprise.context. *).

Правильно ли сказать, что один может переключаться между JSF и CDI области видимости аннотациями только путем изменения импорта в классах фасоли без каких-либо изменений в Facelets Xhtml код?

ли установленный шаблон, который JSF/Facelets следует использовать только для кода разметки XHTML со всеми объему и жизненным циклом (плюс инъекции) аннотациями сделано с использованием CDI?

В JBoss AS настройки, где управление жизненным циклом из JSF отступающих бобов (с использованием либо JSF или CDI аннотациями), происходящие? В веб-контейнере или контейнере EJB3?

В типичном вебе-приложении, учитывая, что SessionScoped бобов могут быть предоставлен CDI, есть ли необходимость в использовании, отличные от типа @Entity, например, бобов EJB3 для последнего типичного шага в каждом «потоке», когда информация должна сохраняться в базе данных?

ответ

3

Правильно ли сказать, что один может переключаться между JSF и CDI области видимости аннотациями только путем изменения импорта в классах фасоли без каких-либо изменений в коде Xhtml Facelets?

Да.


ли установленный шаблон, который JSF/Facelets следует использовать только для кода разметки XHTML со всеми объем, и жизненным циклом (плюс инъекций) аннотаций, сделанных с помощью CDI?

JSF движется в направлении CDI. Об этом свидетельствует новая аннотация @FlowScoped предстоящего JSF 2.2, поскольку это распространяется на API CDI. Единственным недостатком является то, что CDI не предлагает стандартную аннотацию для чрезвычайно полезной аннотации JSF @ViewScoped. Вам понадобится @ConversationScoped, в котором вы вручную запускаете и завершаете разговор, или смотрите расширение CDI, например MyFaces CODI.


В JBoss AS настройки, где управление жизненным циклом из JSF отступающих бобов (с использованием либо JSF или CDI аннотаций) происходит? В веб-контейнере или контейнере EJB3?

Веб-контейнер (в аромате ВОЙНЫ). JSF построен поверх Servlet API, поэтому он определенно является веб-контейнером.


В типичном веб-приложения, учитывая, что бобы SessionScoped могут быть предоставлены CDI, есть ли необходимость в использовании, отличных от типа @Entity, например EJB3 бобы для последнего типичного шага в каждом «потоке», когда информация должна сохраняться в базе данных?

@Entity является частью JPA, не EJB. @Entity должен использоваться в классе модели, который сопоставляется с таблицей базы данных и обычно предназначен исключительно для передачи данных по уровням. То, что вы в последний раз описываете, похоже на кандидата для @Stateful EJB. Чтобы понять @Stateless против @Stateful EJBs лучше, голова к этому подробный ответ: JSF request scoped bean keeps recreating new Stateful session beans on every request?

+0

К сожалению, был осажденный в страшном «переполнение стека требует внешнего JavaScript из другого домена» проблемы и не может быстро принять ваш ответ. –

+0

Ваш ответ очень ясен. То, что я понимаю, немного волосатое, - это взаимосвязь между жизненным циклом EJB и тем, что поддерживает бобы. Мне кажется, что в принципе EJB beans - совершенно другой зверь и не имеет прямой связи с страницами JSF и их бэкэндами. Тем не менее, в жизненных циклах соответствующих фасонов, похоже, существует какая-то незначительная зависимость и некоторые действительные и недействительные комбо. Статья, которую вы разделили, проливает некоторый свет, но я думаю, что нет никакой замены практического опыта. –

+0

EJB следует использовать как деловые услуги. Они не должны заботиться о каких-либо артефактах JSF вообще и иметь дело только с объектами модели (экземпляры '@ Entity'). Абонентский компонент JSF (контроллер) должен, в свою очередь, иметь модельный объект ('@ Entity') как свойство, которое было использовано в представлении, а также EJB как услугу (введенный' @ EJB'). Абонентский компонент JSF должен иметь методы действий, которые будут выполнять методы EJB. Затем эти методы действия связываются с командами links/buttons/ajaxlisteners в представлении. – BalusC