Перевести EntityManager в спящий режим + JOTM:транзакции не используются
-
20-09-2019 - |
Вопрос
Я пытаюсь интегрировать вместе JOTM и Hibernate EntityManager, чтобы протестировать мои EJBS в транзакционной среде, но вне контейнера.
Мой тест выглядит следующим образом:
- Запустите JOTM
- Поместите пользовательскую транзакцию JOTM в JNDI
- Создайте и настройте StandardXADataSource
- Поместите источник данных в JNDI
- Настройте режим гибернации и создайте EMF
- Создайте EM
- Начать транзакцию
- Присоединяйтесь к транзакции в EM
- Хранить сущность
- Убедитесь, что он сохранен
- Откат транзакции
- Проверьте базу данных на количество записей
- Разрушьте все до основания
Вот как выглядит мой код:http://pastebin.com/m22a9f6b
Вот результаты протоколирования:http://pastebin.com/m6da9383a
Тест завершается неудачей на шаге 12 (строка 121).
Как вы можете видеть, даже несмотря на то, что я откатил транзакцию, в базе данных есть запись.Похоже, транзакции там вообще не использовались, и запись попала в базу данных.
Есть ли у вас какие-либо идеи, как это могло произойти и как это исправить?
Решение
Я понял, что мне нужно предоставить свою собственную реализацию ConnectionProvider, которая возвращала бы XAConnection вместо простых подключений.Таким образом, транзакции, похоже, работают