Я говорю именно о EJB 3.1, и я знаю, что согласно спецификациям сеансовый компонент без сохранения состояния не должен реализовывать интерфейс SessionSynchronization
, но может ли кто-нибудь объяснить мне, почему? Итак, я не прошу обходного пути, но я хотел бы знать причины этого ограничения.
ОБНОВИТЬ:
Я не думаю, что это связано с границами транзакций, потому что контейнер должен фиксироваться после завершения бизнес-метода, как указано в разделе 13.6.2.2:
Контейнер пытается зафиксировать транзакцию после завершения бизнес-метода. Контейнер выполняет протокол фиксации перед отправкой результата метода клиенту.
Согласно учебнику по Java EE 6:
Обычно контейнер начинает транзакцию непосредственно перед запуском метода корпоративного компонента и фиксирует транзакцию непосредственно перед выходом метода. Каждый метод может быть связан с одной транзакцией. Внутри метода не допускаются вложенные или множественные транзакции.