Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 36 di 68
  • livello ninja
Indice lezioni

Session Bean

Panoramica sui Bean di sessione, EJB utilizzati per la produzione della logica di business
Panoramica sui Bean di sessione, EJB utilizzati per la produzione della logica di business
Link copiato negli appunti

Abbiamo introdotto, nei capitoli precedenti, le tre tipologie di bean usati per la logica applicativa in ambiente Enterprise. Per primi vedremo i Session Bean.

Un Session Bean è un componente di logica applicativa usato per modellare le funzioni di business. Se ipotizziamo un servizio di e-banking, saranno funzioni tipiche come effettuare un bonifico, vedere il saldo o la lista movimenti, ricaricare una carta prepagata, ecc.

Il termine Session, sessione, identifica il ciclo di vita del componente. Il container utilizza tali oggetti durante una sessione utente, creandoli e distruggendoli dinamicamente. Il loro particolare ciclo di vita non li rende perciò adatti alla persistenza (per la quale esistono gli entity bean).

In generale, i session bean possono far uso degli entity bean (per utilizzare le informazioni persistenti) e sono usati, in ambiente web, dalle servlet e dalle JSP.

La presenza di questi componenti ed il loro particolare ciclo di vita che andremo a vedere, permette una gestione molto efficiente delle risorse del sistema. Esistono due tipologie di session bean: stateless (senza stato) e stateful (con stato).

Gli stateless session bean sono dei componenti di logica usati quando non c'è necessità di mantenere informazioni tra il client ed il server. In pratica sono oggetti usati per una richiesta ed una risposta. Questo particolare modello, che non li lega ad alcun client in maniera forte, rende possibile una gestione di risorse eccellente attraverso il meccanismo del pooling.

L'application server mantiene una struttura dati (pool) in cui esistono una serie di istanze attive di stateless session bean. Ad ogni richiesta verrà utilizzato il primo bean del pool libero. Così facendo è evidente che un pool ben dimensionato può servire migliaia di utenti simultaneamente con pochissimi oggetti disponibili. L'application server infatti non dovrà sprecare risorse nelle operazioni di creazione e distruzione, riutilizzando quanto già presente in memoria.

Gli stateless session bean sono evidentemente molto efficienti, ma possono essere utilizzati solo nel caso in cui tra un'operazione ed un'altra non debbano essere mantenuti informazioni tra client e server. In questo caso utilizzeremo gli Stateful Session Bean.

A differenza dei precedenti, il ciclo di vita dello stateful session bean è legato alla presenza di un utente. Un tipico stateful session bean è il carrello della spesa, un componente utilizzato di continuo durante la navigazione di un sito di e-commerce.

L'application server mantiene in memoria una struttura dati che lega ad ogni utente l'eventuale stateful session bean, e la loro gestione questa volta differisce rispetto al pooling.

Per questi componenti, il cui rapporto è 1:1 (con i client che hanno iniziato una conversazione con il server), il ciclo di vita prevede le fasi di passivazione ed attivazione. L'application server, per mantenere efficienti le risorse, procede a mettere in uno stato passivo gli stateful session bean che in un dato momento non sono attivi, riattivandoli nel momento in cui l'utente effettua delle operazioni.

Le procedure di passivazione e di attivazione sono delle procedure di scrittura / lettura su disco fisso (swap), come accade per i sistemi operativi e la memoria virtuale.

In questo modo, l'application server manterrà in memoria solo gli stateful session bean che stanno effettuando delle operazioni, riattivando gli altri nel momento del bisogno (vedremo nelle prossime lezioni un esempio concreto). Siccome verranno effettuate delle operazioni di scrittura sul disco è necessario che tutti gli oggetti coinvolti estendano l'interfaccia Serializable (che gli EJB ereditano di default dalla classe che estendono).

Ti consigliamo anche