Enterprise JavaBeans
Da Wikipedia, l'enciclopedia libera.
Gli Enterprise JavaBean (EJB) sono i componenti che implementano, lato server, la logica di business all'interno dell'architettura J2EE. Le specifiche per gli EJB definiscono diverse proprietà che questi devono rispettare, tra cui la persistenza, il supporto alle transazioni, la gestione della concorrenza e della sicurezza e l'integrazione con altre tecnologie, come JMS, JNDI, e CORBA. Lo standard attuale, EJB 3, differisce notevolmente dalle versioni precedenti; è stato completato nella primavera del 2006.
[modifica] Motivazioni
Le specifiche EJB intendono fornire una metodologia standard per implementare la logica di funzionamento delle applicazioni di tipo enterprise, applicazioni cioè che forniscono servizi via Internet. Per realizzare applicazioni di questo tipo è necessario affrontare una serie di problematiche tecniche che possono rivelarsi molto complesse e laboriose da risolvere. Gli Enterprise JavaBean intendono fornire una soluzione a questi problemi in modo da semplificare lo sviluppo di questo tipo di applicazioni.
Le specifiche EJB descrivono in dettaglio come realizzare un application server che fornisca le seguenti funzionalità:
- Persistenza
- Elaborazione delle transazioni
- Controllo della concorrenzialità
- Programmazione ad eventi tramite il Java Message Service
- Servizio di directory per elencare e nominare gli EJB (JNDI)
- Sicurezza ( (EN) JCE e JAAS )
- Installazione di componenti software in un application server
- Invocazione di procedure remote tramite l'utilizzo di RMI-IIOP o CORBA
- Fornire servizi web
Inoltre le specifiche definiscono il ruolo del contenitore di Enterprise JavaBean e di come far comunicare il contenitore con gli EJB.
[modifica] Tipi di Enterprise JavaBean
Esistono tre tipi di EJB:
- EJB di Entità (Entity EJB): il suo scopo è di inglobare gli oggetti sul lato server che memorizzano i dati. Gli EJB di entità forniscono la caratteristica della persistenza dei dati:
- Persistenza gestita dal contenitore (CMP): il contenitore si incarica della memorizzazione e del recupero dei dati relativi a un oggetto utilizzando una tabella di una base di dati.
- Persistenza gestita dal bean (BMP): in questo caso è il bean a occuparsi del salvataggio e recupero dei dati a cui fa riferimento, il salvataggio può avvenire in una base di dati o con qualsiasi altro meccanismo perché è il programmatore che si incarica di realizzare il meccanismo della persistenza dei dati.
- EJB di sessione (Session EJB): gestiscono l'elaborazione delle informazioni sul server. Generalmente sono una interfaccia tra i client e i servizi offerti dai componenti disponibili sul server. Ne esistono di due tipi:
- con stato (stateful). I bean di sessione con stato sono oggetti distribuiti che posseggono uno stato. Lo stato non è persistente, però l'accesso al bean è limitato ad un unico client.
- senza stato (stateless). I bean di sessione senza stato sono oggetti distribuiti senza uno stato associato, questa carattestistica permette un accesso concorrente alle funzionalità offerte dal bean. Non è garantito che il contenuto delle variabili di istanza si conservi tra diverse chiamate ai metodi del bean.
- EJB guidati da messaggi (Message driven EJBs): sono gli unici bean con funzionamento asincrono. Tramite il Java Message Service (JMS), si iscrivono a un argomento (topic) o a una coda (queue) e si attivano alla ricezione di un messaggio inviato all'argomento o alla coda a cui sono iscritti. Non richiedono una istanziazione da parte dei client.