2015-08-25 20 views
5

Có được phép (và thực hành tốt) để giữ một số thông tin được chia sẻ trong ứng dụng của chúng tôi bằng cách sử dụng một Singleton Session Bean bên trong Bean Session Session không?Tiêm Singleton Session Bean vào một phiên Session Stateless

SSB sẽ được đưa vào SLSB.

@Stateless 
public class MySLSB { 

    @Inject 
    MySSB mySSB; 

-

@Singleton 
@Lock(READ) 
public class MySSB implements Serializable { 

    private static final long serialVersionUID = 1L; 
+0

Bạn có thể trình bày ví dụ về cách bạn thực sự sử dụng nó trong mã của mình không? Nó sẽ hữu ích cho tôi. – SacJn

+1

Ví dụ, chúng ta cần một số cấu hình trong ứng dụng của chúng tôi. Cấu hình này được lưu trữ dưới dạng thực thể trong DB của chúng tôi và phải được phân tích cú pháp trước khi sử dụng. Để tránh tải và phân tích cú pháp cấu hình này mỗi lần chúng ta cần, chúng tôi chỉ cần một lần và lưu trữ cấu hình phân tích cú pháp trong SSB làm đối tượng. – Gatschet

Trả lời

6

Nó nhiều hơn mức cho phép. Sử dụng tiêm Singleton trong EJB không quốc tịch hoặc không trạng thái của bạn sẽ cho phép bạn gọi các phương thức kinh doanh trên SSB trong SLSB của bạn. Một trong những lợi thế tầm thường là sử dụng các khả năng đồng thời SSB. Trong ví dụ của bạn, tất cả các phương thức của bạn gọi bạn SSB sẽ bị khóa trên Read và điều đó có nghĩa là tất cả các chủ đề của bạn sẽ truy cập các phương thức SSB của bạn ở chế độ Đọc trừ khi một chủ đề đang giữ khóa trên Viết.

1

Vâng, nó được cho phép và tôi nghĩ rằng đó là thực hành tốt. Trong các dự án tôi đang làm việc với các thuộc tính toàn cầu được lưu trữ được đọc từ tệp. Đó là thực hành tốt bởi vì bạn lưu trữ nó ở một nơi và nếu bạn cần những thông tin này thì bạn chỉ phải tiêm đậu đơn của bạn. Tôi nghĩ đó là ví dụ tốt về nguyên tắc hollywood.