EJB 3: Произошла незаконная попытка зафиксировать ресурс, поддерживающий одну фазу, с существующими ресурсами, поддерживающими две фазы.

Недавно мы перенесли наше приложение EJB2 на EJB 3. Теперь мы столкнулись со следующей ошибкой.

An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred.

Сначала мы выполняем транзакцию на основе источника данных XA, затем не-XA и, наконец, XA.

Похоже, что NON-XA после того, как XA вызывает проблему.

Это отлично работало с EJB2.

Может ли кто-нибудь помочь нам в этом.

Заранее спасибо.


person Prasobh.Kollattu    schedule 01.07.2017    source источник


Ответы (1)


Похоже, вы используете ресурс, для которого не включен двухфазный XA (возможно, драйвер базы данных)? Я не эксперт в этом, но этот блог может быть полезен:

https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/trace_analysis_wtrn0063e?lang=en

person altenbue    schedule 03.07.2017
comment
Это хорошая ссылка. Если ваше приложение EJB 2.x включило последнюю фазу оптимизации в своем дескрипторе развертывания, убедитесь, что новое приложение EJB 3.x делает то же самое. Это нельзя настроить с помощью аннотаций. Настройка называется «Поддержка последнего участника». Пример: ibm.com/support/knowledgecenter/en/SSAW57_8.5.5/ - person kaczyns; 03.07.2017
comment
LPS имеет некоторый риск, связанный с этим, поэтому мы изменили нашу транзакцию без XA на XA, чтобы поддерживать двухфазную фиксацию. Теперь она работает нормально. Теперь нам нужно проверить ее влияние :( ... Спасибо вам обоим за ответ: ). - person Prasobh.Kollattu; 10.07.2017