我有一個使用容器管理事務的MDB(我的容器是IBM Websphere 7)。容器管理事務和工作線程的MDB
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()」?預防問題的正確方法是什麼?
我們使用這樣的啓動線程: com.ibm.asynchbeans.WorkManager.startWork(...) –
好,偉大。然後改變交易屬性,你應該沒問題。 –
我發佈了一個編輯我的原始問題,關於正確的實現方式,需要在此代碼中添加新內容。謝謝。 –