b'\n_START_ARTICLE_\nEnterprise JavaBeans\n_START_PARAGRAPH_\nIn informatica gli Enterprise JavaBean (EJB) sono i componenti software che implementano, lato server, la logica di business di un\'applicazione web all\'interno dell\'architettura/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 multi-tier._NEWLINE_Le specifiche per gli EJB definiscono diverse propriet\xc3\xa0 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.2, completato nella primavera del 2013, differisce notevolmente dalla versione 2.1 delle specifiche, in quanto introduce la possibilit\xc3\xa0 di effettuare dependency injection e di effettuare mediante annotations le configurazioni che precedentemente avvenivano mediante XML. Gli EJB necessitano di un EJB container tipicamente implementato all\'interno degli application server assieme al servlet container per la parte di front-end.\n_START_SECTION_\nTipi di Enterprise JavaBean\n_START_PARAGRAPH_\nFino alla versione 2.1 della specifica esistevano tre tipi di Enterprise JavaBeans, dalla versione 3.0 in poi ne esistono soltanto due, in quanto gli Entity Bean sono stati deprecati. Per completezza vengono riportati tutti i tipi di EJB.\n_START_SECTION_\nEJB di sessione\n_START_PARAGRAPH_\nDetti anche 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 e senza stato._NEWLINE_Dalla versione 3.2 dello standard EJB possono essere invocati in modo asincrono. L\'invocazione asincrona avr\xc3\xa0 come valore di ritorno una variabile di tipo Future<V>, che permetter\xc3\xa0 al chiamante di conoscere l\'effettivo valore di ritorno, verificare l\'eventuale presenza di eccezioni ed annullare una chiamata in corso.\n_START_SECTION_\nCon stato\n_START_PARAGRAPH_\nVengono anche detti stateful.  I bean di sessione con stato sono oggetti distribuiti che possiedono uno stato.  Lo stato non \xc3\xa8 persistente, per\xc3\xb2 l\'accesso al bean \xc3\xa8 limitato ad un unico client._NEWLINE_Un esempio di bean con stato \xc3\xa8:_NEWLINE_@Stateful_NEWLINE_public class Contatore {_NEWLINE_   private int totale = 0;_NEWLINE_   public int totale() {_NEWLINE_       return totale;_NEWLINE_   }_NEWLINE_   public void incrementa() {_NEWLINE_       totale = totale + 1;_NEWLINE_   }_NEWLINE_   public void azzera() {_NEWLINE_       totale = 0;_NEWLINE_   }_NEWLINE_}\n_START_SECTION_\nSenza stato\n_START_PARAGRAPH_\nDetti anche stateless.  I bean di sessione senza stato sono oggetti distribuiti senza uno stato associato, questa caratteristica permette un accesso concorrente alle funzionalit\xc3\xa0 offerte dal bean.  Non \xc3\xa8 garantito che il contenuto delle variabili di istanza si conservi tra diverse chiamate ai metodi del bean._NEWLINE_Un esempio di bean senza stato \xc3\xa8:_NEWLINE_@Stateless_NEWLINE_public class SalutoBean {_NEWLINE__NEWLINE_ public String salutaUtente() {_NEWLINE_    return "Benvenuto!";_NEWLINE_ }_NEWLINE__NEWLINE_}\n_START_SECTION_\nEJB guidati da messaggi\n_START_PARAGRAPH_\nDetti anche Message driven EJBs. Erano gli unici bean con funzionamento asincrono (dalla versione 3.2 dello standard anche EJB di sessione possono essere invocati in modo 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.'