Транзакции с двухэтапной фиксацией (XA) не включены в Liberty на облачных платформах. По умолчанию администратор транзакций Liberty записывает файл протокола транзакций в локальную файловую систему. Поскольку локальная файловая система временная на облачных платформах, файл протокола транзакций недоступен после сбоя приложения или виртуальной машины Java. Хотя администратор транзакций можно настроить для использования службы базы данных для хранения протоколов транзакций, облачные платформы автоматически создают полностью новый экземпляр приложения после сбоя. Как следствие, администратор транзакций не может определить, какой конкретно протокол использовать для восстановления транзакций сбойного экземпляра.
По умолчанию объекты EJB управляются контейнером и имеют атрибут транзакции Required, то есть используются транзакции JTA. Транзакции JTA, охватывающие один ресурс, полностью поддерживаются. Транзакциям JTA, охватывающим несколько ресурсов, требуется двухэтапная фиксация, которая не поддерживается. Это правило помечает файлы ejb-jar.xml и код Java, которые ссылаются на пакет javax.ejb.
Это правило также помечает код Java, содержащий ссылки на класс javax.transaction.UserTransaction.
Проверьте приложение на наличие транзакций XA и удалите их, если они есть.
В коде Java следующие явные аннотации являются признаком применения транзакций JTA:
javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.MANDATORY)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRED)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.REQUIRES_NEW)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.SUPPORTS)javax.ejb.TransactionManagement(javax.ejb.TransactionManagementType.CONTAINER)В файле ejb-jar.xml следующие явные элементы являются признаком применения транзакций JTA:
<trans-attribute>Mandatory|Required|RequiresNew|Supports</trans-attribute><transaction-type>Container</transaction-type>Примечание: если приложение не использует класс javax.transaction.UserTransaction и все
объекты EJB Beans приложения управляются как bean-объекты или контейнеры с атрибутами транзакции "Never" или "NotSupported", то приложение не использует транзакции XA и пометки этого
правила можно игнорировать.
Следующие явные аннотации и элементы указывают на то, что объект EJB не использует транзакции XA:
javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.NEVER)javax.ejb.TransactionAttribute(javax.ejb.TransactionAttributeType.NOT_SUPPORTED)javax.ejb.TransactionManagement(javax.ejb.TransactionManagementType.BEAN)<trans-attribute>Never|NotSupported</trans-attribute><transaction-type>Bean</transaction-type>