2012-04-11 21 views
5

Chúng tôi đang di chuyển ứng dụng từ JBoss Seam sang CDI (JEE6), vì vậy chúng tôi đang thay đổi một số thông tin như @In và @Out, có rất nhiều thông tin mà chúng tôi thấy hữu ích , nhưng chúng tôi có một số khó khăn cố gắng tìm ra cách để thay thế anotations với mô hình cụ thể:thay đổi anotations từ JBoss Seam sang CDI (JEE6)

Đối @In anotation

@Name("comprobantes")//context name 
... 
@In(create=false,value="autenticadoPOJO",required=false) 
    private UsuarioPOJO autenticadoPOJO; 

chúng ta có thể sử dụng @Inject từ CDI, nhưng làm thế nào để thiết lập tên của bối cảnh biến cho trường hợp này ?.

Đối với anotation @Out

@Out(scope = ScopeType.SESSION, value = "autenticadoPOJO", required = false) 

Tôi đã đọc một số blog và họ nói rằng tôi có thể sử dụng @Produces trong CDI, làm thế nào chúng ta có thể thiết lập các phạm vi, trước hoặc sau khi thêm anotation này?

Tôi đánh giá cao mọi trợ giúp hoặc bất kỳ tài liệu hữu ích nào.

Trả lời

2

http://docs.jboss.org/weld/reference/1.0.0/en-US/html/producermethods.html

8.1. Phạm vi của phương thức sản xuất

Phạm vi của phương thức nhà sản xuất mặc định là @Dependent, và do đó nó sẽ được gọi mỗi khi vùng chứa tiêm trường này hoặc bất kỳ trường nào khác xử lý cùng phương thức sản xuất. Do đó, có thể có nhiều phiên bản của đối tượng PaymentStrategy cho mỗi phiên người dùng.

Để thay đổi hành vi này, chúng tôi có thể thêm chú thích @SessionScoped vào phương thức.

@Produces @Preferred @SessionScoped 
public PaymentStrategy getPaymentStrategy() { 
    ... 
} 
+0

Bạn có thể tìm https://github.com/seam/migration, wiki cho rằng repo và các file trong đó là Hữu ích. – LightGuard

3

Tôi e rằng không có khả năng tương thích 1: 1 cho @Out.

Về mặt kỹ thuật, @Out trong Seam 2 đã được thực hiện bởi bộ chặn cho tất cả các lời gọi phương thức - điều này hóa ra lại là một nút cổ chai khá hiệu suất.

Trong CDI, hầu hết các bean được quản lý đều được ủy quyền, điều này khiến cho kỹ thuật không thể thực hiện việc loại bỏ theo đường Seam 2.

Bạn có thể làm gì (tốt, những gì bạn thực sự phải làm) đang thực hiện tất cả các tập quán của @Out và thay thế riêng lẻ bằng một số logic @Producer. Hãy xem this official example tại đây. Trong Seam 2, bạn sẽ loại bỏ người dùng đã được xác thực tới phạm vi phiên, trong CDI, một phương thức sản xuất nhỏ (gần như) giống nhau.

Đó hy vọng sẽ cung cấp cho bạn một khởi đầu tốt, đừng ngần ngại hỏi thêm câu hỏi :)

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