Enterprise JavaBeans: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Vitalij zad (discussione | contributi)
Strututturazione in paragrafi ed aggiornamento dei contenuti della voce
Riga 1:
In [[informatica]] gli '''Enterprise JavaBean''' ('''EJB''') sono i componenti [[software]] che implementano, lato [[server]], la [[business logic|logica di business]] di un'[[applicazione web]] all'interno dell'architettura/[[piattaforma (informatica)|piattaforma]] [[Java EE]] espletando servizi a favore della parte di [[front-end]] ovvero per la logica di presentazione di un'[[applicazione web]]. Rappresentano dunque uno strato software residente su un [[application server]] all'interno di un'[[architettura software]] di tipo [[architettura multi-tier|multi-tier]].
 
Le specifiche per gli EJB definiscono diverse proprietà che questi devono rispettare, tra cui la [[persistenza (informatica)|persistenza]], il supporto alle [[Transazione (basi di dati)|transazioni]], la gestione della [[concorrenza (informatica)|concorrenza]] e della [[sicurezza informatica|sicurezza]] e l'integrazione con altre tecnologie, come [[Java Message Service|JMS]], [[JNDI]], e [[CORBA]]. Lo [[standard (informatica)|standard]] attuale, '''EJB 3.2''', completato nella primavera del [[20062013]]<ref>[https://jcp.org/en/jsr/detail?id=345]</ref>, differisce notevolmente dalle versioni precedenti. Gli EJB necessitano di un ''EJB container'' tipicamente implementato all'interno degli application server assieme al ''[[servlet]] container'' per la parte di front-end.
 
== Motivazioni ==
Le specifiche EJBEnterprise JavaBean intendono fornire una metodologia standard per implementare la logica di funzionamento delle [[applicazione (informatica)|applicazioni]] di tipo ''enterprise'', applicazioni cioè che forniscono servizi via [[Internet]] su larga scala. 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 EJBEnterprise JavaBean descrivono in dettaglio come realizzare un [[application server]] che fornisca le seguenti funzionalità:
* [[Persistenza (informatica)|Persistenza]];
* Elaborazione delle [[Transazione (basi di dati)|transazioni]];
Riga 12:
* [[Programmazione ad eventi]] tramite il [[Java Message Service]];
* [[Servizio di directory]] per elencare e nominare gli EJB ([[JNDI]]);
* [[Sicurezza informatica|Sicurezza]] (JCE<ref>{{en}} [http://java.sun.com/products/jce/index-14.html]</ref> e [[Java Authentication and Authorization Service]]);
* [[Installazione (informatica)|Installazione]] di componenti software in un application server;
* [[Chiamata di procedura remota|Invocazione di procedure remote]] tramite l'utilizzo di [[RMI-IIOP]] o [[CORBA]];
* Fornire [[web service|servizi web]].
 
Inoltre le specifiche definiscono il ruolo del [[contenitore di Enterprise JavaBean]] e di come far comunicare il contenitore con gli EJB.
 
== Tipi di Enterprise JavaBean ==
 
Esistono tre tipi di EJB:, di seguito descritti.
 
* '''EJB di Entità''' (''Entity EJB''): il loro scopo è di inglobare gli oggetti sul lato server che memorizzano i dati. Gli entity bean forniscono la caratteristica della [[persistenza (informatica)|persistenza dei dati]]:
=== EJB di Entità ===
** '''Persistenza gestita dal contenitore''' (CMP): il contenitore si incarica della memorizzazione e del recupero dei dati relativi a un oggetto utilizzando una [[tabella (basi di dati)|tabella]] di una [[base di dati]].
*Vengono '''EJBdetti di Entità'''anche (''Entity EJB''):. ilIl loro scopo è di inglobare gli oggetti sul lato server che memorizzano i dati. Gli entity bean forniscono la caratteristica della [[persistenza (informatica)|persistenza dei 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.
** '''Persistenza gestita dal contenitore''' (CMP): il contenitore si incarica della memorizzazione e del recupero dei dati relativi a un oggetto utilizzando una [[tabella (basi di dati)|tabella]] di una [[base di dati]].
* '''EJB di sessione''' (''Session EJB''): gestiscono l'[[elaborazione dati|elaborazione]] delle informazioni sul ''server''. Generalmente sono una [[interfaccia (informatica)|interfaccia]] tra i ''client'' e i servizi offerti dai componenti disponibili sul ''server''. Ne esistono di due tipi:
** '''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.
** '''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]]''.
=== EJB di sessione ===
** '''senza stato''' (''stateless''). I ''bean'' di sessione senza stato sono oggetti distribuiti senza uno stato associato, questa caratteristica 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''.
*Detti '''EJB di sessione'''anche (''Session EJB''):. gestisconoGestiscono l'[[elaborazione dati|elaborazione]] delle informazioni sul ''server''. Generalmente sono una [[interfaccia (informatica)|interfaccia]] tra i ''client'' e i servizi offerti dai componenti disponibili sul ''server''. Ne esistono di due tipi:
* '''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''.
** '''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 caratteristica 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 ===
*Detti '''EJB guidati da messaggi'''anche (''Message driven EJBs''):. sonoSono 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''.
 
== Versioni ==
* [http://www.jcp.org/en/jsr/detail?id=19 JSR 19: Enterprise JavaBeansTMJavaBeans 2.0]
* [http://www.jcp.org/en/jsr/detail?id=153 JSR 153: Enterprise JavaBeansTMJavaBeans 2.1]
* [http://www.jcp.org/en/jsr/detail?id=220 JSR 220: Enterprise JavaBeans 3.0] introduce la possibilità di dichiarare e configurare gli Enteprise JavaBeans mediante il meccanismo delle annotations. Da questa versione in poi, un EJB non deve più estendere alcuna classe specifica. Tale modifica viene spesso citata come Plain Old Java Object (POJO). Vengono introdotti i primi meccanismi di dependency injection e per la persistenza c'è Java Persistence API (JPA).
* [https://jcp.org/en/jsr/detail?id=318 JSR 318: Enterprise JavaBeans 3.1] va nella direzione della semplificazione. Tale direzione è obbligata dalla fortissima diffusione dello Spring Framework. Introduce il cosiddetto Lite EJB, ovvero la possibilità di inserire degli Enterprise JavaBeans all'interno di un Web Archive, che finora poteva contenere unicamente servlet, ma non EJB. Ora è possibile invocare gli EJB da una applicazione Java SE, senza dover usare servlet container o application server. I session bean possono essere invocati in modo asincrono e c'è la possibilità di creare degli EJB Timer.
* [httphttps://www.jcp.org/en/jsr/detail?id=220345 JSR 220345: Enterprise JavaBeansTMJavaBeans 3.02]
 
== Note ==
<references/>
 
 
==Versioni==
*[http://www.jcp.org/en/jsr/detail?id=19 JSR 19: Enterprise JavaBeansTM 2.0]
*[http://www.jcp.org/en/jsr/detail?id=153 JSR 153: Enterprise JavaBeansTM 2.1]
*[http://www.jcp.org/en/jsr/detail?id=220 JSR 220: Enterprise JavaBeansTM 3.0]
 
[[Categoria:Java EE]]