Имеем: Сервер Wildfly, управление транзакциями - контейнер. Используется XA транзакция.
MDB Bean получает сообщения из ActiveMQ. В процессе работы через бизнес-бин производит запись в БД. В случае успеха происходит коммит транзакции в БД и удаление сообщения из JMS. В случае неудачи - rollback. Все работает как нужно, но раздражают в лог файлах WILDFLY WARN от arjuna и ERROR от Hibernate.
Вопрос - как правильно в такой схеме работать с оптимистичными блокировками, если транзакциями управляет сервер приложений? Ведь фактически принятие решения о commit/rollback принимает сервер приложений за границами работы MDB?
Нет, это не так. Транзакциями управляет менеджер транзакций и в зависимости от архитектуры вашего приложения он решает каким образом происходит комит транзакций.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости