Запрос на завершение шва в транзакции - PullRequest
2 голосов
/ 15 декабря 2010

Согласно моему пониманию, Seam заключает каждый запрос в транзакцию.Мое веб-приложение (код в некоторых швах с отслеживанием состояния) в данный момент вызывает некоторый интерфейс EJB, являющийся частью сервера приложений, который также обслуживает настольный клиент (целое серверное приложение, предоставляющее все функции, которые необходимы для моего веб-приложения).

Теперь, выполнение последующих вызовов от beam bean-компонентов к этим ejb-методам обернуто в его собственную транзакцию контейнером Seam, спасибо, но никакого «сброса» между ними не происходит, то есть менеджер сущностей не возвращается ко мнеобновлять данные о последующих вызовах.

Я обошел это, просто добавив некоторые методы в классы ejb, которые сами создают новую транзакцию (форсирование сброса в конце их выполнения).Я счастлив, что НЕ откатился назад, если все пошло не так.Я нигде не могу найти, как, возможно, настроить Seam, чтобы обернуть выполнение КАЖДОГО вызова ejb в транзакцию вместо того, чтобы обернуть выполнение запроса ВЕСЬ.

Есть идеи?

1 Ответ

1 голос
/ 19 января 2011

Ну, Seam упаковывает каждый запрос в две транзакции (дополнительная транзакция только для чтения для ответа рендеринга JSF).Вы можете отключить это поведение, отключив Управление транзакциями в Seam, но это откроет ворота для всех видов отложенных исключений при инициализации ...

В (редких) случаях, когда эта проблема возникаламне, я обычно выполнял ручную очистку / обновление на EntityManager.В большинстве случаев данные, которыми манипулируют разные методы, должны быть разделены по своей природе, однако

...