エンティティ マネージャを使用するときに、トランザクションに自動的に参加する XAResource を取得する方法を知っていますか?
Bitronix、JPA、休止状態を使用しており、コードは正常に動作しますが、特定の 1 つが失敗した場合にすべての XAResources をロールバックしたくありません。現在のトランザクションからリストを削除したいだけで、他のトランザクションはコミットされます。
しかし、現在のトランザクションのリストから削除するには、オブジェクト XaResource が必要ですが、JPA/Bitronix でそれを取得する方法がわかりません。コードの例:
transactionManager.begin();
try {
(...)
EntityManager em = emf.createEntityManager();
(...)
em.close();
} catch (Exception e) {
// old version - rollback every XaResource in the current transaction
//transactionManager.rollback();
//new version wanted - rollbackonly this XaResource
transactionManager.getTransaction().delistResource(XaResource ...);
throw e;
}
transactionManager.commit();
ご協力いただきありがとうございます。