我有一个使用容器管理事务的 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()”?预防问题的正确方法是什么?