2011-12-21 27 views
6

Tôi đang cố gắng lấy đầu xung quanh CDI và EJB và mẫu Kiểm soát thực thể ranh giới (ECB). Sự hiểu biết của tôi về mô hình ECB là ranh giới là sự bắt đầu và kết thúc của ranh giới giao dịch. Hơn nữa, CDI không cung cấp hỗ trợ giao dịch như EJB.EJB vs CDI và mẫu "Kiểm soát thực thể ranh giới"

Vì vậy, nếu tôi muốn triển khai thành công mẫu ECB, thì điều sau là đúng;

  1. Tôi có thể triển khai phần ranh giới với EJB (ví dụ: @stateless, @stateful, @singleton) và lớp Điều khiển bằng CDI hoặc EJB.
  2. Tôi có thể triển khai phần Ranh giới và Kiểm soát với CDI nhưng triển khai hỗ trợ giao dịch trong Ranh giới tương tự (http://smokeandice.blogspot.com/2009/12/cdi-and-declarative-transactions.html)
  3. Tôi không thể thực hiện ranh giới với CDI và sau đó bắt đầu sử dụng EJB trong lớp điều khiển.

Cảm ơn

+1

Vậy thì câu hỏi là gì? –

+0

Im chỉ muốn kiểm tra suy nghĩ của tôi rằng 3 điểm tôi đề cập là chính xác? Hoặc nếu suy nghĩ của tôi là sai. – vcetinick

Trả lời

12

tôi thành công thực hiện mô hình ECB trong JavaEE 6 sử dụng EJB của chỉ duy nhất cho các ranh giới và CDI cho Controllers. Một stack điển hình trong kiến ​​trúc của tôi sử dụng

  • Stateless EJB của đậu chú thích với JAX-RS chú thích để thực hiện một dịch vụ REST như Boundary
  • CDI quản lý đậu cho logic kinh doanh trong phạm vi @Dependent như điều khiển
  • CDI quản lý trong phạm vi @Dependent cho Data Access Objects mà sử dụng EntityManager JPA để tương tác với một cơ sở dữ liệu
  • JPA entity bean

EJB không quốc tịch của mà hình thành Bounda ry luôn được chú thích bằng @TransactionAttribute (YÊU CẦU) là mặc định. Tôi không sử dụng các thuộc tính giao dịch khác. Làm như vậy, bạn có thể đảm bảo rằng mọi tương tác với Ranh giới diễn ra chính xác trong một giao dịch.

Bằng cách chỉ sử dụng phạm vi @Dependent cho các bean được quản lý CDI, bạn có thể đảm bảo rằng mọi luồng đều có cá thể riêng của nó về hạt đó. Vì vậy, bạn không bao giờ có nhiều hơn một thread truy cập một bean được quản lý CDI cùng một lúc. Làm như vậy sẽ ngăn bạn khỏi các vấn đề tương tranh thông thường.

Sử dụng kết hợp trọng lượng nặng hơn, EJB gộp cho các hạt được quản lý CDI ranh giới và trọng lượng nhẹ cho phần còn lại của ứng dụng hoạt động rất tốt đối với tôi.

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