セッションBeanで、Container-Managed-Transactionsを使用しているときに、REQUIRED / SUPPORTSなどのトランザクション属性を使用して、トランザクションを既存のクライアントトランザクションに参加させることができることがわかりました。
Bean-Managed-Transactionを使用しているときに、そのトランザクションを既存のclient-transactionと結合させる方法はありますか?
セッションBeanで、Container-Managed-Transactionsを使用しているときに、REQUIRED / SUPPORTSなどのトランザクション属性を使用して、トランザクションを既存のクライアントトランザクションに参加させることができることがわかりました。
Bean-Managed-Transactionを使用しているときに、そのトランザクションを既存のclient-transactionと結合させる方法はありますか?
いいえ(仕様の§13.6.1および§13.6.2を参照)。
しかし、なぜとにかくそれをするのですか?Beanが別の場所で開始されたトランザクションに参加することを意図している場合は、CMTwithREQUIREDを作成します。BMTBeanが別のBeanを呼び出す場合も同じ状況です。BMT Beanはトランザクションの境界を制御し、他のBeanはCMTを使用してトランザクションに参加します。
また、仕様では、「クライアント」という用語はBeanの呼び出し元を指し、別のBean、スタンドアロンクライアント、または外部クライアント(Webサービスリクエストなど)の場合もあります。