2011-10-05 28 views
6

Tôi đã viết một bài kiểm tra nhỏ để hiểu hành vi không đồng bộ trong EJB3.1 bằng cách sử dụng chú thích @Asynchronous. Dường như:Phương pháp EJB 3.1 không đồng bộ và các giao dịch

Nếu phương pháp này tồn tại trong đậu tương tự như người gọi,

  1. Gọi không còn asynchronized.
  2. Giao dịch người gọi được đánh dấu để quay lại, nếu giao dịch trong phương thức không đồng bộ được cuộn lại; nó có thể là tác dụng phụ của 1.

Tuy nhiên, nếu phương pháp không đồng bộ tồn tại trong một bean khác, hành vi không đồng bộ và giao dịch người gọi độc lập (phương thức không đồng bộ có REQUIRES_NEW hành vi giao dịch). Điều này là khó hiểu đối với tôi, là lý do tại sao hành vi không giống nhau trong cả hai trường hợp. Ai đó xin vui lòng làm rõ?

P.S. Môi trường EJB 3.1, JBoss 6

+1

bạn đang gọi phương thức bằng cách sử dụng 'SessionContext # getBusinessObject (lớp)' thay vì sử dụng từ khoá 'this' này? (sự khác biệt được giải thích [ở đây] (http://stackoverflow.com/questions/3381002/how-is-the-return-value-of-sessioncontext-getbusinessobject-different-from-thi/3384128#3384128)) – stratwine

+0

@ stratwine Gần như chắc chắn vấn đề, tôi sẽ chỉ chuyển đổi nó thành một câu trả lời. –

+0

@stratwine Bạn nói đúng, xin vui lòng viết bình luận của bạn trong câu trả lời để tôi có thể chấp nhận – anergy

Trả lời

5

Gọi phương thức sử dụng this từ khóa thay vì sử dụng SessionContext#getBusinessObject(class) làm điều đó. (sự khác biệt được giải thích here)

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