2015-01-05 27 views

Trả lời

22

Giao dịch XA, theo thuật ngữ chung nhất, là "giao dịch toàn cầu" có thể mở rộng nhiều tài nguyên. Giao dịch không phải XA luôn liên quan đến chỉ một tài nguyên.

Giao dịch XA liên quan đến người quản lý giao dịch điều phối, với một hoặc nhiều cơ sở dữ liệu (hoặc các tài nguyên khác, như JMS) đều tham gia vào một giao dịch toàn cầu duy nhất. Các giao dịch không phải XA không có điều phối viên giao dịch và một tài nguyên đơn lẻ đang thực hiện tất cả các công việc giao dịch của chính nó (điều này đôi khi được gọi là các giao dịch cục bộ).

jta = "true", Giao dịch tự động thực hiện.

11

Tôi đã tự hỏi về điều này bản thân mình ("sử dụng JTA" tùy chọn trong một không XA Datasource) vì vậy tôi đã thử nghiệm một số cấu hình. Tôi có một giao dịch phân tán kết nối với hai máy chủ MySQL.

Đây là kết quả của tôi. Nếu tôi có:

  1. Hai datasources phi XA, cả hai đều có JTA = "true"

Kết quả: "Không thể tranh thủ trong giao dịch trên vào đối tượng meta-aware" Lỗi

  1. Hai phi XA datasources, với một JTA = "true"

Kết quả: Họ sẽ không tham gia vào các giao dịch phân tán. Mỗi người sẽ cam kết riêng.

  1. Một XA và một phi XA với JTA = "false",

Result: giống như # 2

  1. Một XA và một không phải XA với JTA = "true".

Kết quả: Hoạt động!

Từ đây, có vẻ như tùy chọn "sử dụng JTA" cho biết liệu tùy chọn đó có tham gia vào giao dịch phân phối nếu có nguồn dữ liệu XA hay không.

Các vấn đề liên quan