Перевести EntityManager в спящий режим + JOTM:транзакции не используются

StackOverflow https://stackoverflow.com/questions/1340871

Вопрос

Я пытаюсь интегрировать вместе JOTM и Hibernate EntityManager, чтобы протестировать мои EJBS в транзакционной среде, но вне контейнера.

Мой тест выглядит следующим образом:

  1. Запустите JOTM
  2. Поместите пользовательскую транзакцию JOTM в JNDI
  3. Создайте и настройте StandardXADataSource
  4. Поместите источник данных в JNDI
  5. Настройте режим гибернации и создайте EMF
  6. Создайте EM
  7. Начать транзакцию
  8. Присоединяйтесь к транзакции в EM
  9. Хранить сущность
  10. Убедитесь, что он сохранен
  11. Откат транзакции
  12. Проверьте базу данных на количество записей
  13. Разрушьте все до основания

Вот как выглядит мой код:http://pastebin.com/m22a9f6b

Вот результаты протоколирования:http://pastebin.com/m6da9383a

Тест завершается неудачей на шаге 12 (строка 121).

Как вы можете видеть, даже несмотря на то, что я откатил транзакцию, в базе данных есть запись.Похоже, транзакции там вообще не использовались, и запись попала в базу данных.

Есть ли у вас какие-либо идеи, как это могло произойти и как это исправить?

Это было полезно?

Решение

Я понял, что мне нужно предоставить свою собственную реализацию ConnectionProvider, которая возвращала бы XAConnection вместо простых подключений.Таким образом, транзакции, похоже, работают

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top