Я столкнулся с необычной проблемой с моим веб-приложением, размещенным на Wildfly 8, при развертывании в ОС Linux по сравнению с Windows Server. В своем приложении я полагаюсь на транзакции EJB, которые по умолчанию должны быть атомарными. Однако я заметил, что транзакции в двух средах ведут себя по-разному.
В Windows Server все работает как положено, и транзакции остаются нетронутыми. Однако когда я развертываю то же приложение в ОС Linux, транзакции, похоже, прерываются преждевременно. После некоторого расследования я обнаружил, что такое поведение может быть связано с автоматическим вызовом метода flush() перед оператором select.
Вот некоторые дополнительные подробности:
flush() перед операторами выбора.Я убедился, что конфигурации в двух средах согласованы. Однако я изо всех сил пытаюсь понять, почему возникает такая разница в поведении и как с ней справиться.
Кто-нибудь еще сталкивался с подобными проблемами с транзакциями EJB в Wildfly 8.3, особенно между разными операционными системами? Существуют ли какие-либо конкретные конфигурации или параметры, о которых мне следует знать при развертывании в Linux, чтобы обеспечить целостность транзакций?
Любые идеи или предложения будут с благодарностью приняты. Спасибо!





Первоначально я подозревал, что операционная система может играть роль. Однако дальнейшее расследование показало, что виновником было свойство JTA (Java Transaction API) в моей конфигурации источника данных на Wildfly 8.
Понимание свойства JTA:
По умолчанию для свойства JTA в Wildfly установлено значение true, что позволяет осуществлять транзакции, управляемые контейнером. Это гарантирует, что сервер приложений обрабатывает жизненные циклы транзакций (начало, фиксация, откат). Однако если для этого свойства случайно установлено значение false, Wildfly не сможет управлять транзакциями EJB, что приведет к неожиданному поведению.
проверьте свойство JTA в вашей конфигурации DataSource на Wildfly 8. Убедитесь, что для него явно установлено значение true или оставлено значение по умолчанию (что также верно). Это гарантирует транзакции, управляемые контейнером, и ожидаемое атомарное поведение ваших транзакций EJB.