1 / 20

Ingegneria del software I

Ingegneria del software I. Seminario 3:Enterprise Java Beans. Enterprise Java Beans. Architettura per sistema ad oggetti distribuito transazionale, basato su componenti Mantengono logica di impresa e permettono meccanismo uniforme di comunicazione con client Agiscono entro un container.

brick
Download Presentation

Ingegneria del software I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ingegneria del software I Seminario 3:Enterprise Java Beans

  2. Enterprise Java Beans • Architettura per sistema ad oggetti distribuito transazionale, basato su componenti • Mantengono logica di impresa e permettono meccanismo uniforme di comunicazione con client • Agiscono entro un container

  3. Enteprise Java Container • Container definisce ambiente sicuro di esecuzione per un bean. • Gestisce tutti gli aspetti runtime • accessi remoti • sicurezza • persistenza • transazioni • concorrenza • accesso a risorse.

  4. Comunicazione con client

  5. Deployment di EJBs • Scrivere una Bean Class • Scrivere una Remote Interface • Scrivere la Home Interface (create, activate) • Scrivere l’ejb-jar.xml • Scrivere gli xml per le specifiche piattaforme • Creare Naked EJB tramite un jar • Trasformare Naked in Deployable • Deploy dell’ejb • Richiamarlo dal client

  6. ConvertitoreBean Package …; Import javax.ejb.*; Import java.util.*; Public class ConvertitoreBean Implements SessionBean { private SessionContext ctx; public ConvertitoreBean() {} public void setSessionContext(SessionContext c){ ctx=c; } public void ejbCreate(); public void ejbRemove(); public void ejbPassivate(); public void ejbActivate(); public double converti(int lire) { return lire/1936.27; } }

  7. Home Interface: ConvertitoreHome Package …; Import javax.ejb.*; Import java.rmi.*; Public Interface ConvertitoreHome extends EJBHome { public Convertitore create() throws CreateException, RemoteException }

  8. Remote Interface: Convertitore Package …; Import javax.ejb.*; Import java.rmi.*; Public Interface Convertitore extends EJBObject { public double converti(int lire) throws RemoteException; }

  9. Naked EJB <!DOCTYPE ejb-jar …> <ejb-jar> <enterprise-beans> <session> <ejb-name>ConvBean</ejb-name> <home>ConvertitoreHome</home> <remote>Convertitore</remote> <ejb-class>ConvertitoreBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>

  10. Client Package client; Import javax.naming.*; Import java.rmi.*; Import …; Class Client { public static void main(String args[]){ try{ InitialContext ic = new InitialContext(); ConvertitoreHome home = (ConvertitoreHome) PortableRemoteObject.narrow(ic.lookup(“ConvEuro”),ConvertitoreHome.class); Convertitore convertitore = (Convertitore) home.create(); double euro= convertitore.converti(8500); System.out.println(“Risultato:”+euro); }catch (Exception e){ System.out.println(e); } } }

  11. Responsabilità dell’implementazione • Scheletri per interface EJBHome e EJBObject non implementati dal Bean, ma dal container. • Metodi invocati dal client sono prima gestiti dal container, • applica controlli (e.g. persistenza, transazionalità, accesso) • delega al bean la realizzazione

  12. Gestione comunicazione

  13. Tipi di Bean • Entity • oggetti che rappresentano entità nella logica di impresa • mantenuto in modo persistente • Session • oggetti che rappresentano processi nella logica di impresa • definiscono caratteristiche dell’attivazione

  14. Gerarchia delle classi Bean

  15. Tipi di entità • Rappresenta dati mantenuti in un database. • Fornisce interfaccia object-oriented al database • Persistenza gestita • dal container • dal bean

  16. Container Managed Persistence • Campi dell’entità associati a elementi nel database • Bean non ha codice per accedere il database. • Accessi e modifiche dei campi passano per il container • Container sincronizza lo stato del bean con il database.

  17. Bean Managed Persistence • Entity bean contiene codice di accesso al database (JDBC) • Responsabile per leggere e scrivere il proprio stato nel database. • Necessità di lettura o aggiornamento indicate dal container. • Container può gestire locking e transazionalità

  18. Session bean • Gestiscono le interazioni delle entità, accedono a risorse, eseguono compiti per il client • Non sono persistenti • Incapsulano business logic di un’architettura three-tiered

  19. Tipi di sessione • Stateless • comportamento simile a procedure: operano solo sugli argomenti passati • sono transienti • Stateful • incapsulano logica di business e stato specifici a un client • Mantengono stato di business fra invocazioni di metodi

  20. Message Driven Bean • Client non usano interfacce, inviano messaggi. Bean definisce solo la classe • Simili a stateless session: non legati a client specifico • Container può assegnare un messaggio a qualsiasi istanza del bean • Bean può rispondere a client diversi • Variabili del bean possono mantenere stato, verso altri bean o verso connessioni • Rispondono a messaggi JMS • Comportamento simile a listener. Viene attivato metodo onMessage(Message msg)

More Related