2008-08-27 7 views
6

Theo sự hiểu biết của tôi đậu phiên không trạng thái được sử dụng để mã logic kinh doanh. Chúng không thể lưu trữ dữ liệu trong các biến cá thể của chúng bởi vì cá thể của chúng được chia sẻ bởi nhiều yêu cầu. Vì vậy, chúng dường như giống các lớp Singleton hơn. Tuy nhiên, sự khác biệt có chứa tạo (hoặc reuses từ hồ bơi) trường hợp riêng biệt của đậu phiên không trạng thái cho mỗi yêu cầu.Tại sao đậu phiên không trạng thái là một luồng đơn?

Sau khi googling tôi có thể tìm thấy lý do mà đặc tả Java EE cho biết chúng được giả định là đơn luồng. Nhưng tôi không thể hiểu lý do tại sao được chỉ định là SINGLE THREADED?

Trả lời

5

SLSB là luồng đơn vì ngữ cảnh TX, Hiệu trưởng được kết hợp với cá thể bean khi được gọi. Những hạt cà phê này được gộp lại và trừ khi kích thước hồ bơi tối đa đạt được được xử lý trong các chủ đề riêng biệt (Nhà cung cấp phụ thuộc).

Nếu SLSB được thiết kế chủ đề an toàn, mọi cuộc gọi sẽ trông giống như một servlet doGet/Post với thông tin yêu cầu chứa Tx Context, Thông tin bối cảnh bảo mật và v.v. Vì vậy, ít nhất mã trông sạch sẽ (nhà phát triển phụ thuộc).

4

Lý do chính khiến đậu phiên không trạng thái là đơn luồng là làm cho chúng có khả năng mở rộng cao cho vùng chứa. Vùng chứa có thể tạo ra rất nhiều giả định đơn giản về môi trường thời gian chạy. Lý do thứ hai là làm cho cuộc sống dễ dàng hơn cho nhà phát triển bởi vì nhà phát triển không phải lo lắng về việc đồng bộ hóa hoặc tái nhập trong logic nghiệp vụ của mình vì bean sẽ không bao giờ được gọi trong ngữ cảnh luồng khác.

Tôi nhớ lý do được thảo luận trong các đánh giá về đặc tả EJB 1.0 gốc. Tôi sẽ xem phần mục tiêu của đặc điểm kỹ thuật. Xem http://java.sun.com/products/ejb/docs.html để biết danh sách các thông số kỹ thuật.