Ingegneria del software I
description
Transcript of Ingegneria del software I
1Università La Sapienza
Ingegneria del Software I
Ingegneria del software I
Seminario 3:Enterprise Java Beans
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
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.
4Università La Sapienza
Ingegneria del Software I
Comunicazione con client
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
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;
}}
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
}
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;
}
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>
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);}
}}
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
22Università La Sapienza
Ingegneria del Software I
Gestione comunicazione
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
24Università La Sapienza
Ingegneria del Software I
Gerarchia delle classi Bean
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
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.
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à
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
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
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)