Я успешно внедрил шаблон ECB в JavaEE 6, используя EJB исключительно для границ и CDI для контроллеров.Типичный стек в моей архитектуре использует
- EJB без сохранения с аннотациями JAX-RS для реализации службы REST в виде Boundary
- управляемых компонентов CDI для бизнес-логики в области @Dependent в качестве контроллера
- Управляемые компоненты CDI в области @Dependent для объектов доступа к данным, которые используют JPA EntityManager для взаимодействия с базой данных
- Объектные объекты JPA
EJB-компоненты без состояния, которые формируютГраница всегда помечается @TransactionAttribute (REQUIRED), который используется по умолчанию.Я не использую другие атрибуты транзакции.Таким образом, вы можете гарантировать, что каждое взаимодействие с границей будет происходить ровно в одной транзакции.
Используя только область @Dependent для управляемых bean-компонентов CDI, вы можете гарантировать, что каждый поток имеет свой собственный экземпляр этогофасоль.Таким образом, у вас никогда не бывает более одного потока, одновременно обращающегося к управляемому компоненту CDI.Это избавит вас от типичных проблем параллелизма.
Использование сочетания более тяжелого веса, объединенных в пул EJB для управляемых bean-компонентов Boundary и облегченного CDI для остальной части приложения работает очень хорошо для меня.