У нас возникают проблемы с блокировкой таблицы и взаимоблокировками в приложении EJB 3.0/JPA 1.0/DB2 10.1. Мы выяснили, что если простой запрос SELECT исключается в методе ejb, который поддерживает транзакцию, записи становятся заблокированными (следующая блокировка ключа - режим блокировки NS), что в конечном итоге приводит к потенциальным проблемам с взаимоблокировками. Если тот же запрос выполняется в ejb-методе без транзакции, блокировка не происходит, и я думаю, что так оно и должно быть.Ejb CMT Атрибут транзакции NotSupported не приостанавливает транзакцию клиента
Вопрос: У нас есть ejb ejbA с методомA, который требует транзакции. У нас есть ejbB с методом B, который имеет простой запрос выбора и не должен работать внутри транзакции, поэтому мы устанавливаем атрибут trnasaction для: NotSupported. Мы называем метод B из метода A.
Учебник Oracle EE6 гласит: если клиент работает в транзакции и вызывает метод корпоративного компонента, контейнер приостанавливает транзакцию клиента перед вызовом метода. По завершении метода контейнер возобновляет транзакцию клиента.
Как мы понимаем, метод B должен приостановить транзакцию из метода A и не должен блокировать запись, но это делает, что приводит меня к выводу, что транзакция не приостановлена.
Не могли бы вы помочь нам решить и понять поведение.
Спасибо за ответ. Мы вызываем ejbB.methodB из ejbA.methodA, разные ejb, поэтому это не должно быть проблемой. – Mitko
Ну, в этом случае, возможно, нам нужен фактический код. Не могли бы вы обновить свой вопрос? –