Должны ли EJB быть переменными экземпляра и помечаться как переходные в JSF Managed Beans? - PullRequest
2 голосов
/ 22 марта 2012

У нас есть несколько JSF-управляемых bean-компонентов с Request, View и Session Scope, и мы работаем с WebLogic 11g (10.3.2).Weblogic не поддерживает аннотацию @EJB в управляемом компоненте JSF, поэтому мы использовали эти процедуры http://technology.amis.nl/2008/12/06/ejb-dependency-injection-of-session-bean-facade-in-jsf-12-on-weblogic-103-jsf-with-jpa/ для создания ServletConextListener для загрузки ссылок EJB с использованием аннотации @EJB.

Эффективно изнутриУправляемый компонент JSF, мы можем затем искать интерфейс EJB для EJB, который мы хотим использовать, получая его из ServletContext.

Итак, вопросы:

1) Можно ли сделать интерфейс EJB переменной экземпляра в ManagedBean?(обоснование заключается в том, что EJB вызывается много раз в течение цикла страницы)

2) если мы делаем их переменными экземпляра, следует ли помечать переменные экземпляра EJB Interfaces как переходные?

1 Ответ

6 голосов
/ 22 марта 2012

1) Можно ли сделать интерфейс EJB переменной экземпляра в ManagedBean? (обоснование заключается в том, что EJB вызывается много раз в течение цикла страницы)

Это нормальный дизайн, да. Это не отличается от использования @EJB. В любом случае, возвращенный экземпляр EJB является прокси . Прокси, в свою очередь, будет беспокоиться о делегировании вызовов метода правильному и доступному конкретному экземпляру EJB в пуле EJB контейнера.

Ваша единственная проблема может быть @Stateless против @Stateful, как видно по отношению к области действия управляемого JSF-компонента. Вы должны действительно понимать, что означает каждая сессия EJB. @Stateless может возвращать вам случайный экземпляр при каждом вызове. @Stateful дает вам один и тот же экземпляр, пока клиент (в данном конкретном случае, экземпляр управляемого компонента JSF) живет. Более подробное объяснение можно найти здесь: Компонент JSF в области запросов продолжает воссоздавать новые сеансовые компоненты с сохранением состояния при каждом запросе?


2) если мы сделаем их переменными экземпляра, мы должны пометить переменные экземпляра интерфейсов EJB как переходные?

Не требуется. EJB-прокси по умолчанию уже сериализуем.

...