(для повышения производительности, когда работа передается только одному источнику данных, и мне не нужна глобальная транзакция).
Прежде всего, вы действительно измерили, что это увеличивает производительность? Как правило, когда в транзакции участвует только 1 транзакционный ресурс, поставщик транзакций оптимизирует автоматически.
Что касается фактического исключения, возможно, вам следует показать код, который вы на самом деле используете. Интересно, транзакция, использованная для загрузки сущности через модуль персистентности XA, уже закончилась.
Если транзакция закончилась, ваша сущность будет отделена, и никто больше не будет помнить, откуда она первоначально пришла. Поскольку этот другой сессионный компонент без сохранения состояния, о котором вы говорите, требует новой транзакции, у вас есть форма вложенных транзакций, и это может быть проблемой, если свойства объекта загружаются лениво.
Обычно AccessLocalException
на самом деле более показателен к проблеме безопасности, например, когда оба бина находятся в разных сферах безопасности и / или для них определено @RolesAllowed
, которого у участника безопасности (вызывающего) нет.