2016-10-07 5 views
0

ПОМЕЩЕНИЕ:Должен ли EJB_Y (вызываемый EJB_X) аннотироваться как «@Stateful», чтобы быть потокобезопасным?

  1. без гражданства EJB_X содержит аннотированный ссылку на EJB_Y (например, "@EJB EJB_Y")

  2. EJB_X необходимо инициализировать EJB_Y перед вызовом его бизнес-методы

  3. Пусть что EJB_X обе (а) инициализируются, а затем (b) вызывает бизнес-метод (ы) EJB_Y - то есть «многошаговый» процесс (?)

ВОПРОС:

ли EJB_Y должны быть аннотированный как "@Stateful" для того, чтобы быть поточно?

Примечание:
бы в противном случае EJB_Y быть только простой POJO (например, POJO_Y) - тем не менее, кажется, что для того, чтобы иметь регистрацию параметров метода доступа класса «@Interceptor» используется вызов EJB_X, чтобы EJB_Y-х бизнес-методы, EJB_Y должны быть EJB ...

Другая информация (?):

а. EJB 3.1

b. EJB_X предоставляет методы ОТДЫХА

c. в настоящее время отнесены к WebLogic 12.1.3 работает JDK 1.8.x

+0

Пожалуйста, покажите свой код –

+0

Почему бы вам не использовать прототип bean, который живет только в вашем контексте, может иметь состояние и является фасолью Spring. – Matt

+0

Thx, Steve C. - К сожалению, еще одно ограничение: * no Spring * ... -Решение должно быть выполнено с использованием Java 8, Weblogic 12.1.3 Java ee container (и любой дополнительный набор Java ee 7 поддерживается этой версией), CDI ... – sairn

ответ

1

вопрос:

  1. Что вы подразумеваете под EJB_X инициализирует EJB_Y? Это контейнер, который инициализирует EJB.

И несколько моментов:

  1. EJB обнажая услуги остальное разрешено, но с Oracle точки зрения, выставляя свой бизнес-логику, это своего рода «быстрый и грязный» подход, который должен быть пересмотрен в в ближайшем будущем (я четко помню этот вопрос из моего архитекторского экзамена). Чтобы упростить, EJB должен быть задней частью службы отдыха, или лучше, веб-служба должна оставаться на уровне интеграции.
  2. EJB без сохранения состояния и все последующие вызовы для других EJB без сохранения состояния являются потокобезопасными, а безопасность потока гарантируется контейнером (в этом случае веб-логика) не нужно делать его неустойчивым. Если вам нужна многопоточность в мире EJB, ищите @Singleton
  3. Просто, чтобы говорить, я всегда находил слово «без гражданства» и «stateful» из Sun/Oracle немного обманчивым, я бы сказал бессвязным и разговорным с самого начала, если английский язык позволяют это :-)

[UPDATE]

Это не имеет смысла ссылаться на SFSB из SLSB. В конечном итоге у вас будут непредсказуемые результаты, только из-за характера SLSB, живущих в пуле, и их совместного использования среди клиентов.Вы также потеряете одно из самых важных преимуществ SLSB: масштабируемость.

Я мало знаю о вашей архитектуре и дизайне, но я бы пересмотрел уровень веб-сервиса, избавившись от EJB переднего плана и структурируя вместо этого класс, который будет вести себя как веб-сервис (используя аннотацию). Затем, если вы хотите остаться в мире EJB, передайте все свои данные в контексте вызова EJB, а затем извлеките его из самого EJB.

+0

Под «инициализацией» я имею в виду заданные свойства в EJB_Y перед вызовами в EJB_Y. -Это помогает? – sairn

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