Ingegneria del software I

20
1 Università La Sapienza Ingegneria del Software I Ingegneria del software I Seminario 3:Enterprise Java Beans

description

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. - PowerPoint PPT Presentation

Transcript of Ingegneria del software I

Page 1: Ingegneria del software I

1Università La Sapienza

Ingegneria del Software I

Ingegneria del software I

Seminario 3:Enterprise Java Beans

Page 2: Ingegneria del software I

2Università La Sapienza

Ingegneria del Software I

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

Page 3: Ingegneria del software I

3Università La Sapienza

Ingegneria del Software I

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.

Page 4: Ingegneria del software I

4Università La Sapienza

Ingegneria del Software I

Comunicazione con client

Page 5: Ingegneria del software I

5Università La Sapienza

Ingegneria del Software I

Deployment di EJBs1. Scrivere una Bean Class2. Scrivere una Remote Interface3. Scrivere la Home Interface (create, activate)4. Scrivere l’ejb-jar.xml5. Scrivere gli xml per le specifiche piattaforme6. Creare Naked EJB tramite un jar7. Trasformare Naked in Deployable8. Deploy dell’ejb9. Richiamarlo dal client

Page 6: Ingegneria del software I

6Università La Sapienza

Ingegneria del Software I

ConvertitoreBeanPackage …;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;

}}

Page 7: Ingegneria del software I

7Università La Sapienza

Ingegneria del Software I

Home Interface: ConvertitoreHome

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

}

Page 8: Ingegneria del software I

8Università La Sapienza

Ingegneria del Software I

Remote Interface: Convertitore

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

}

Page 9: Ingegneria del software I

9Università La Sapienza

Ingegneria del Software I

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>

Page 10: Ingegneria del software I

10Università La Sapienza

Ingegneria del Software I

ClientPackage 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);}

}}

Page 11: Ingegneria del software I

21Università La Sapienza

Ingegneria del Software I

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

Page 12: Ingegneria del software I

22Università La Sapienza

Ingegneria del Software I

Gestione comunicazione

Page 13: Ingegneria del software I

23Università La Sapienza

Ingegneria del Software I

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

Page 14: Ingegneria del software I

24Università La Sapienza

Ingegneria del Software I

Gerarchia delle classi Bean

Page 15: Ingegneria del software I

25Università La Sapienza

Ingegneria del Software I

Tipi di entità

• Rappresenta dati mantenuti in un database.

• Fornisce interfaccia object-oriented al database

• Persistenza gestita– dal container– dal bean

Page 16: Ingegneria del software I

26Università La Sapienza

Ingegneria del Software I

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.

Page 17: Ingegneria del software I

28Università La Sapienza

Ingegneria del Software I

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à

Page 18: Ingegneria del software I

29Università La Sapienza

Ingegneria del Software I

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

Page 19: Ingegneria del software I

30Università La Sapienza

Ingegneria del Software I

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

Page 20: Ingegneria del software I

31Università La Sapienza

Ingegneria del Software I

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)