2015-08-25 18 views
5

È consentito (e buona pratica) di conservare alcune informazioni condivise nella nostra applicazione utilizzando un bean Session di singleton all'interno di un bean di sessione stateless?Inject Bean Session Singleton in un bean di sessione stateless

L'SSB verrà inserito nell'SLSB.

@Stateless 
public class MySLSB { 

    @Inject 
    MySSB mySSB; 

-

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

    private static final long serialVersionUID = 1L; 
+0

Puoi per favore presentare un esempio di come lo usi effettivamente nel tuo codice? Sarà utile per me. – SacJn

+1

Ad esempio, abbiamo bisogno di alcune configurazioni nella nostra applicazione. Questa configurazione è memorizzata come entità nel nostro DB e deve essere analizzata prima dell'uso. Per evitare di caricare e analizzare questa configurazione ogni volta che è necessario, eseguiremo una sola volta e memorizzeremo la parsed config in SSB come oggetto. – Gatschet

risposta

6

È più che consentito. L'utilizzo delle iniezioni Singleton negli EJB stateless o statefull consente di chiamare metodi business sul proprio SSB nel SLSB. Uno dei vantaggi trascurabili è l'utilizzo delle funzionalità simultanee SSB. Nel tuo esempio tutte le chiamate di metodo verso di te SSB verrebbero bloccate su Leggi e questo significa che tutti i thread accederanno ai tuoi metodi SSB in modalità di lettura a meno che un thread non sia in possesso di un blocco su Write.

1

Sì, è consentito e penso che è una buona pratica. Nei progetti con cui lavoro ci sono proprietà globali memorizzate lette dal file. È una buona pratica perché la memorizzi in un posto e se hai bisogno di queste informazioni devi solo iniettare il tuo fagiolo singleton. Penso che sia un buon esempio del principio di Hollywood.