Sự khác biệt giữa JTA và giao dịch địa phương là gì?


84

Sự khác biệt giữa JTA và giao dịch địa phương là gì?

Một ví dụ cho thấy khi nào sử dụng JTA và khi nào sử dụng giao dịch cục bộ sẽ rất tuyệt.

Câu trả lời:


136

JTAlà một API chung để quản lý các giao dịch trong Java. Nó cho phép bạn bắt đầu, cam kết và khôi phục các giao dịch theo cách trung lập về tài nguyên. Trạng thái giao dịch thường được lưu trữ trong TLS (Thread Local Storage) và có thể được truyền sang các phương thức khác trong ngăn xếp gọi mà không cần một số đối tượng ngữ cảnh rõ ràng được chuyển xung quanh. Tài nguyên giao dịch có thể tham gia giao dịch đang diễn ra. Nếu có nhiều hơn một tài nguyên tham gia vào một giao dịch như vậy, thì ít nhất một trong số chúng phải được gọi là tài nguyên XA.

A resource local transactionlà một giao dịch mà bạn có với một tài nguyên cụ thể sử dụng API cụ thể của riêng nó. Một giao dịch như vậy thường không truyền đến các phương thức khác trong ngăn xếp cuộc gọi và bạn bắt buộc phải chuyển một số đối tượng ngữ cảnh rõ ràng xung quanh. Trong phần lớn các giao dịch cục bộ tài nguyên, không thể có nhiều tài nguyên tham gia vào cùng một giao dịch.

Bạn sẽ sử dụng giao dịch cục bộ tài nguyên, ví dụ như mã JDBC cấp thấp trong Java SE. Ở đây đối tượng ngữ cảnh được thể hiện bằng một thể hiện của java.sql.Connection. Các ví dụ khác về giao dịch cục bộ tài nguyên là các nhà phát triển tạo ra các ứng dụng doanh nghiệp vào khoảng năm 2002. Vì các trình quản lý giao dịch (được sử dụng bởi JTA) rất đắt tiền, mã nguồn đóng và những thứ phức tạp để thiết lập trong thời đại đó, mọi người đã sử dụng các biến thể cục bộ tài nguyên rẻ hơn và dễ dàng hơn.

Về cơ bản, bạn sẽ sử dụng giao dịch JTA trong mọi trường hợp khác. Các máy chủ rất đơn giản, nhỏ, miễn phí và mã nguồn mở như TomEE (25MB) hoặc GlassFish (35MB) có hỗ trợ JTA. Không có gì để thiết lập và chúng chỉ hoạt động.

Cuối cùng, các công nghệ như EJB và Spring làm cho thậm chí JTA dễ sử dụng hơn bằng cách cung cấp declarative transactions. Trong hầu hết các trường hợp, bạn nên sử dụng chúng vì chúng dễ dàng hơn, sạch hơn và ít lỗi hơn. Cả EJB và Spring đều có thể sử dụng JTA bên dưới.


5
+1 để giải thích lịch sử và sự phát triển của việc sử dụng JTA (EJB, Spring, v.v.).
Marco

4

Loại giao dịch phải được đặt thành "RESOURCE_LOCAL" cho ứng dụng Java SE và thành "JTA" cho ứng dụng Java EE. "RESOURCE_LOCAL" có thể hoạt động tốt trên một số ứng dụng web được triển khai trên Tomcat, nhưng có thể gây ra sự cố khi bạn chạy ứng dụng của mình trong môi trường glassfish.

Nếu bạn đang làm việc trên các giao dịch phân tán, bạn phải sử dụng "JTA" làm người quản lý giao dịch của mình.


1

API giao dịch Java (JTA) là một trong những API Java Enterprise Edition (Java EE) cho phép các giao dịch phân tán được thực hiện trên nhiều tài nguyên XA trong môi trường Java.


-1

Ứng dụng J2EE bao gồm hỗ trợ cho DT thông qua 2 thông số kỹ thuật
JTA ---> Java Giao dịch API. Triển khai cấp độ thấp và luôn được kích hoạt
JTS ---> Dịch vụ Giao dịch Java.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.