2015-08-25 9 views
5

Vatansız Oturum Beaninin içindeki Singleton Session Bean'i kullanarak uygulamalarımızdaki bazı paylaşılmış bilgileri tutmak için izin var mı (ve iyi uygulama)?Tekil Session Bean'i Vatansız bir Seansta Enjekte Edilsin

SSB, SLSB'ye enjekte edilecektir.

@Stateless 
public class MySLSB { 

    @Inject 
    MySSB mySSB; 

-

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

    private static final long serialVersionUID = 1L; 
+0

Kodunuzda bunu nasıl kullandığınıza dair bir örnek sunabilir misiniz? Benim için faydalı olacak. – SacJn

+1

Örnek olarak, uygulamanızda bazı yapılandırmalara ihtiyacımız var. Bu yapılandırma, DB'deki varlık olarak saklanır ve kullanmadan önce ayrıştırılmalıdır. İhtiyaç duyduğumuz her seferinde bu konfigürasyonu yüklemek ve ayrıştırmaktan kaçınmak için, sadece bir kez yaparız ve ayrıştırılmış yapılandırmayı SSB'ye nesne olarak kaydederiz. – Gatschet

cevap

6

İzin verilenden daha fazlası. Durum bilgisi olmayan veya son durumdaki EJB'lerinizdeki Singleton enjeksiyonlarını kullanmak, SLSB'nizdeki SSB'nizde iş yöntemlerini çağırmanızı sağlar. En önemli avantajlardan biri SSB eşzamanlı yeteneklerini kullanmaktır. Örneğinizde, yönteminizin tümü size doğru çağrılıyor Okumaya SSB kilitlenecek ve bu, bir iş parçacığı Yazma bir kilit tutmadıkça, tüm iş parçacığınızın Okuma modundaki SSB yöntemlerine erişeceği anlamına gelir.

1

Evet, izin verilir ve bunu iyi bir uygulama olduğunu düşünüyorum. Çalıştığım projelerde dosyadan okunan depolanmış global özellikler var. Bu iyi bir uygulamadır çünkü onu tek bir yerde saklarsınız ve eğer bu bilgiye ihtiyacınız varsa, o zaman sadece tekli fasulyeyi enjekte etmeniz gerekir. Hollywood prensibinin güzel bir örneği olduğunu düşünüyorum.