2013-04-04 24 views
5

Các nỗ lực tốt nhất 1 CÁI được mô tả độc đáo trong this post. Tác giả, David Syer, người làm việc cho SpringSource, đã cung cấp một triển khai thực hiện một số ChainedTransactionManager mở rộng lớp Xuân AbstractPlatformTransactionManager.Triển khai Spring ChainedTransactionManager theo mẫu "nỗ lực tốt nhất 1 CÁI"

quản lý giao dịch đặc biệt này có thể bắt đầu n giao dịch, ví dụ, JDBC hoặc phiên JMS, và thực hiện các cam kết/rollback sử dụng n trường hợp của AbstractPlatformTransactionManager, mỗi tài nguyên. Điều này rất hữu ích khi các trình điều khiển XA không có sẵn. Kể từ khi bài viết rất cũ, mã hoạt động tốt với Spring 2.5, nhưng nó không thành công với Spring 3+.

Có một số request ticket để triển khai tính năng tương tự trong Spring 3+. Tôi sẵn sàng thử nó nhưng tôi nghĩ tôi sẽ hỏi trước: có sự triển khai nào không?

Cảm ơn

+1

Tôi nghĩ bạn có thể thử sử dụng ChainedTransactionManager từ spring-data-neo4j, nhưng loại cơ sở dữ liệu nào ngày nay không cung cấp trình điều khiển xa? Nếu bạn cần một ý tưởng khác, blog này http://infinispan.blogspot.com.ar/2011/06/faster-infinispan-based-second-level.html hiển thị cách hệ thống bộ nhớ cache móc đồng bộ hóa JTA, để tránh XA, trong các điều khoản về hiệu suất. – Luciano

+0

Cảm ơn tôi đang sử dụng điều đó ngay bây giờ, ai đó đã đề xuất nó trên Jira của Spring. Và ví dụ Vectorwise không cung cấp trình điều khiển XA. Giovanni –

+0

Hi Giovanni, chúng tôi cũng đang cố gắng để làm một thiết lập tương tự cho ứng dụng hàng loạt mùa xuân của chúng tôi bằng cách sử dụng nỗ lực tốt nhất 1 PC mẫu. Bạn có thể vui lòng cho chúng tôi biết trải nghiệm của bạn khi sử dụng phương pháp này không. Nếu bạn có thể cung cấp cho chúng tôi một tệp cấu hình mẫu để tham khảo, nó sẽ rất hữu ích. id email của tôi là [email protected] Cảm ơn bạn trước – Ravikiran763

Trả lời

3

Theo đề nghị của Luciano, tôi thấy một thực hiện một cách hoàn hảo làm việc của ChainedTransactionManager trong:

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-neo4j-tx</artifactId> 
    <version>2.2.0.RELEASE</version> 
</dependency> 

tên lớp: org.springframework.data.neo4j.transaction.ChainedTransactionManager

EDIT:

Các ChainedTransactionManager là bây giờ là một phần của Spring Data Commons kể từ version 1.6.1.

+0

Các bạn có biết nếu có nhiều phiên bản của ChainedTransactionManager (bây giờ chuyển sang Spring Data Commons) có thể được sử dụng từ các luồng khác nhau để xử lý các giao dịch trên các tài nguyên khác nhau không? Hay nó phải là một singleton? –

+1

@Giovnni Botta Đoán mã cũ nào tôi đang làm việc? :) –

+1

@ JohnHumphreys-w00te chúc may mắn với điều đó! –