2013-03-24 6 views
5

Perché dovrei mai utilizzare EJB? Cosa posso ottenere da ciò che non posso ottenere in altri modi?Quali sono i vantaggi dell'utilizzo di EJB rispetto a POJO?

Quali sono i vantaggi dell'utilizzo di EJB rispetto a POJO?

+5

Transazioni dichiarative dichiarate, sicurezza dichiarativa, iniezione dipendenza, thread-safety automatico, bean stateful, passivazione e attivazione, remoting, ecc. –

risposta

6

sono gestiti e monitorati dal server delle applicazioni Java EE, si occupa della creazione e della fornitura ai client tramite l'integrazione delle dipendenze e la gestione dei loro lifecycles. Gli EJB vengono mantenuti dal server delle app nei pool. Ogni volta che un client acquisisce un bean, l'app-server ne preleva uno dal pool e lo assegna al client. Dopo che il client ha finito con esso (non vi è alcun riferimento ad esso lasciato sul lato client) viene restituito al pool ed è pronto per l'assegnazione ad altri client.

Il pooling è molto significativo per la scalabilità dell'applicazione. Non è necessario modificare nulla su un'applicazione distribuita per gestire il carico crescente e l'applicazione non metterà in ginocchio l'app-server se riceve un carico eccessivo poiché la quantità di risorse è limitata. Tutto è fatto configurando il server dell'app.

Gli EJB possono - se annotati di conseguenza - gestire le transazioni e l'esecuzione asincrona e possono essere esposti ai client remoti.

ci sono quattro tipi di EJB:

bean di sessione

  1. Stateless EJBs: consente al cliente di eseguire qualche operazione e tornare, non può essere utilizzato per tenere uno stato in quanto il server potrebbe assegnarlo a altri client (è possibile utilizzarlo come tipo di comunicazione tra client, ad esempio se si dispone di una variabile di istanza e di impostarlo su un valore, questo valore potrebbe essere visualizzato da altri client). Puoi pensare di usare il metodo Stateless EJB proprio come la programmazione funzionale oi metodi statici di una classe.
  2. Statefull EJBs: Consente al cliente mantenere uno stato tra più richieste (il cliente deve contenere un riferimento ad esso altrimenti il ​​server di applicazione può assegnare a un altro client)
  3. Singleton EJBs: come dice il nome delle garanzie di server che questa istanza è unico per l'intera applicazione.

Messaggio guidato fagioli

  1. Message driven EJBs: è anche stateless e utilizzato per inviare e ricevere messaggi di solito in combinazione con JMS. La funzione di gestione dei messaggi viene eseguita in modo asincrono.

Mentre gli EBJ offrono tutto questo e possono altre cose, i POJO sono solo POJO nientemeno e nient'altro.

+0

> il client deve contenere un riferimento ad esso altrimenti il ​​server app potrebbe assegnarlo a un altro client - Questo non è completamente vero. Il server dell'app non ha alcuna interazione speciale con il GC per verificare se il client abbia ancora un riferimento. Può potenzialmente essere re-impostato e riassegnato dopo che è stato chiamato un metodo '@ Remove'. Più tipicamente l'altro client riceverà un nuovo bean, poiché il pooling è più comune per i bean 'Stateless'. –

+0

Grazie per la precisione, questo era basato su alcuni test eseguiti un paio di mesi prima usando un servlet come client e '@ LocalBean' per il bean di sessione Statefull.Sono stato in grado di mantenere uno stato solo inserendolo nella sessione (web). – A4L

+0

... la strega ha portato al - ancora senza risposta - domanda qual è la 'sessione' in' Session bean'? Apprezzerò se hai qualche link per ulteriori letture su questo! – A4L