[英]Exception thrown when using non-XA datasource in two-phase commit transaction
我的Websphere應用程序有3個數據源。 其中兩個是XA,另一個是非XA。
我通過使用@transactional注釋對方法進行注釋來使Java方法具有事務性。
在該方法中,執行了3個任務。 第一個使用一個XA數據源進行一些更新,然后第二個使用非XA數據源選擇一些記錄,最后一個任務使用另一個XA數據源再次進行一些更新。
但是,會引發異常,並出現以下錯誤: An illegal attempt to commit a one phase capable resource with existing two phase capable resources
我想知道為什么即使我的應用程序僅使用非XA來選擇一些數據並且不需要提交,還是會發生上述錯誤,如果不允許我將非XA數據源更改為XA,如何解決該問題? 。
默認情況下,非XA資源無法參與分布式事務。 因此,您有以下選擇:
Select Resources > JDBC > Data sources Select the name of the data source that you want to configure. Select WebSphere Application Server data source properties from the Additional Properties heading. Select Non-transactional data source. Click OK.
當開始第二個任務時,在使用@Transaction
注釋時, need to be commit or rolled back
在XA數據源上更新的前一個任務,整個任務會自動執行一次事務,因此請不要使用@Transaction注釋,而應使用@Transaction注釋將每個任務放在單獨的事務中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.