2009-05-21 39 views
6

Đậu phiên (đậu phiên không trạng thái, đậu phiên trạng thái) Đã đồng bộ hóa chưa?EJB và Đồng bộ hóa

+1

đồng bộ hóa với những gì? –

+1

ai đó hỏi tôi câu hỏi này, câu trả lời đúng là gì? Tôi không thấy bất kỳ phương thức đồng bộ nào bên trong EJB, tôi sẽ nói EJB không được đồng bộ hóa. Giống như những người được sử dụng để hỏi "là Hashtable đồng bộ?" –

+0

Về mặt kỹ thuật, câu hỏi của bạn không rõ ràng. Bạn có nghĩa là: Cần Session đậu được làm chủ đề an toàn? hoặc Đậu phiên có an toàn không? –

Trả lời

6

Chỉ một chuỗi tại một thời điểm sẽ truy cập vào hạt của bạn. Nó phụ thuộc vào máy chủ ứng dụng để quản lý việc này. Vì vậy, bạn không nên sử dụng đồng bộ từ bên trong đậu của bạn. Đây là lý do tại sao một non-threadsafe như EntityManager có thể là một giá trị thể hiện và không có vấn đề đồng bộ hóa.

+0

Vâng, nhưng ai đó đã hỏi câu hỏi này trong một cuộc phỏng vấn và tôi trả lời theo cùng một cách nhưng anh ấy không hài lòng với câu trả lời của tôi. –

+3

Nó luôn luôn có thể họ không có một đầu mối. –

+1

Chính xác. Hơn nữa, chú thích @AccessTimeout mới cho phép bạn định cấu hình theo cách di động, chính xác khoảng thời gian bạn muốn một chuỗi cuộc gọi chờ một phiên bản có sẵn. Cũng lưu ý rằng bean @Singleton mới có thể được cấu hình để cho phép truy cập đa luồng nhưng không theo mặc định. Quyết định đó đã được thực hiện trong nỗ lực để giữ sự nhất quán đằng sau các quy tắc mặc định cho tất cả các phiên Session (@Stateless, @Stateful, @Singleton) –

-1

Điều rất đúng về hạt EJB là khi bạn đã tạo hạt EJB 3.0 thì phương pháp của EJB theo mặc định được đồng bộ hóa.

ví dụ:

@Statelss Lớp EJBclass {

trống someMethod() {}

}

bây giờ nếu bạn sẽ làm cho điều này someMethod Đồng bộ hóa nó sẽ hiển thị lỗi như nó không phải là có thể được đồng bộ hóa tại mức này vì nó được đồng bộ hóa.

EJB 3.0 Đậu là thông minh và hiệu suất là tốt.

-1

Hạt java doanh nghiệp không được đồng bộ hóa. Vì bean phiên được duy trì bởi vùng chứa ejb nên bạn phải triển khai thực hiện logic đồng bộ hóa ở cấp ứng dụng.

+0

Bạn có chắc chắn về điều này? Tôi nghĩ rằng tiêu chuẩn JEE rất rõ ràng và chỉ có Entity Beans cho phép cấu hình truy cập hiện tại vào các phương thức của chúng. Nêu tôi sai vui long chân chỉnh tôi. – icordoba

1

Đậu phiên có nghĩa là người dùng đã đăng nhập. Nếu người dùng vô tình nhấp đúp vào hành động giao diện người dùng thì hai yêu cầu http được tạo trong hai chuỗi riêng biệt.

  • Đậu không có trạng thái không được đồng bộ hóa. Mỗi chủ đề sẽ nhận được trường hợp khác nhau và cả hai đang thực hiện logic ngang nhau. Cả hai đều có thể truy cập cùng một tài nguyên!
  • Hạt đậu được đồng bộ hóa bởi vùng chứa. Cả hai luồng sẽ nhận cùng một cá thể ejb. Chủ đề thứ hai đang chờ để hoàn thành đầu tiên. Không vấn đề gì.
1

Hạt đậu trạng thái không quốc tịch/tiểu bang là an toàn. Bởi vì mỗi yêu cầu sẽ nhận được một trường hợp chuyên biệt của đậu và do đó nó không cần phải được đồng bộ hóa.

Hạt phiên Singleton được chia sẻ và cần được đồng bộ hóa bởi vùng chứa (Container Managed Concurrency - CMC) hoặc bởi người dùng (Bean Managed Concurrency - BMC).

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