1

JOTM と Hibernate EntityManager を統合して、EJB をトランザクション方式の環境でコンテナの外でテストしようとしています。

私のテストは次のようになります。

  1. JOTMを開始
  2. JOTM の UserTransaction を JNDI に入れる
  3. StandardXADataSource を作成して構成する
  4. DataSource を JNDI に入れる
  5. 休止状態を構成し、EMF を作成する
  6. EM を作成する
  7. 取引を開始する
  8. EMで取引に参加する
  9. エンティティを保存する
  10. 保存されていることを確認する
  11. トランザクションをロールバックする
  12. データベースでレコード数を確認する
  13. すべてを壊して

私のコードは次のようになります: http://pastebin.com/m22a9f6b

ログ出力は次のとおりです。 http://pastebin.com/m6da9383a

テストはステップ 12 (行 121) で失敗します。

ご覧のとおり、トランザクションをロールバックしたにもかかわらず、DB にレコードがあります。まったく使用されず、レコードがデータベースに到達したトランザクションのようです。

これがどのように発生する可能性があり、それを修正する方法はありますか?

4

1 に答える 1

0

単純な接続ではなく、XAConnection を返す ConnectionProvider の独自の実装を提供する必要があることがわかりました。このようにトランザクションは機能しているようです

于 2009-09-09T13:29:03.153 に答える