我正在使用WebSphere 8.5與EJB 3.1和JMS通用提供程序。與XA的JMS會話和JPA事務
我需要使用無狀態會話bean作爲生產者在隊列中編寫消息。 EJB由TransactionAttributeType.REQUIRED
註解,因爲在我發送隊列中的消息之前需要執行一些「DB插入」,並使用這些消息讀取由製作者編寫的記錄。
問題是如果我定義一個JDBC非XA數據源,生產者將消息寫入隊列,但服務器抱怨本地資源(數據源本身我認爲)失敗的2階段提交,並且沒有調用MDB的onMessage
方法。如果我定義一個JDBC XA,一切正常。
我的問題:
- 是一個默認的XA資源所需的JMS會話?爲什麼?
- 如果我將JMS連接工廠配置爲在JTA事務中創建非XA JMS會話,會發生什麼情況?這是一種不好的做法嗎?
- 如果消費者開始消費消息,而生產者仍在數據庫上完成操作,會發生什麼?消費者是否會看到數據庫上的更改,因爲它們處於同一事務中?
在此先感謝,認爲