В проекте, над которым я работаю, у нас есть EJB-сервер, к которому различные клиенты подключаются удаленно (например, веб-уровень, уровень веб-служб и т. Д.).Клиенты находятся на другом компьютере и могут находиться в другом центре обработки данных, поэтому внешний интерфейс и внутренний сервер никогда не находятся на одном сервере приложений.
Внутренний сервер разделен следующим образом:
SLSB <-> Объекты сервисного уровня <-> DAO
Все объекты управляются пружиной, кроме SLSB.Цепочка событий выглядит следующим образом:
Инициализация:
- Entity Manager, внедренный в DAO
- DAO, внедренный в объект службы
- Объект службы введенв SL EJB
- SLSB предоставляют только удаленный интерфейс. Все объекты являются одноэлементными и не имеют состояния.
Запрос / ответ:
метод, вызываемый в EJB, делегирует объекту службы,использует DAO, возвращает DTO
DAO инкапсулирует все операции запроса на объектах JPA.Ни один объект JPA не проходит через уровень обслуживания.Уровень обслуживания разграничивает транзакцию.
Что происходит с объектами JPA после завершения жизненного цикла запроса / ответа с этой архитектурой?Должен ли сервисный уровень пытаться кэшировать объекты или это спящий режим?
И любые комментарии к этой архитектуре приветствуются.
спасибо