コンテナー管理トランザクションを使用するMDBがあります(私のコンテナーはIBM Websphere 7です)。
Websphereはグローバル(JTA)トランザクションを使用しています。
MDBスレッドがワーカースレッドを開始し、そのスレッドがトランザクションを開始した場合、その新しいスレッドはMDBと同じトランザクション内にありますか?
ワーカースレッドが正常に開始されるとすぐに、MDBスレッドがトランザクションをコミットし、MQメッセージを確認するようにします。ワーカースレッドがロールバックした場合にMDBをロールバックしたくありません。
編集:スレッドのコードにはこれがあります-注釈を使用していません:
txn = (UserTransaction)ctx.lookup("java:comp/UserTransaction");
txn.begin();
したがって、txn.getStatus()を見ると、STATUS_NO_TRANSACTION以外の値になります。したがって、Websphere 7に適したトランザクションマネージャーを取得し、txn.begin()の前に「suspend()」を呼び出す必要がありますか?問題を防ぐための正しいアプローチはありますか?