Ingegneria del software I
Seminario 3:Enterprise Java Beans
Ingegneria del Software I
Università La Sapienza
1
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
Ingegneria del Software I
Università La Sapienza
2
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.
Ingegneria del Software I
Università La Sapienza
3
Comunicazione con client
Ingegneria del Software I
Università La Sapienza
4
Deployment di EJBs
1.
2.
3.
4.
5.
6.
7.
8.
9.
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
Ingegneria del Software I
Università La Sapienza
5
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;
}
}
Ingegneria del Software I
Università La Sapienza
6
Home Interface:
ConvertitoreHome
Package …;
Import javax.ejb.*;
Import java.rmi.*;
Public Interface ConvertitoreHome
extends EJBHome {
public Convertitore create()
throws CreateException,
RemoteException
}
Ingegneria del Software I
Università La Sapienza
7
Remote Interface:
Convertitore
Package …;
Import javax.ejb.*;
Import java.rmi.*;
Public Interface Convertitore
extends EJBObject {
public double converti(int
lire) throws RemoteException;
}
Ingegneria del Software I
Università La Sapienza
8
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>
Ingegneria del Software I
Università La Sapienza
9
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.c
lass);
Convertitore convertitore = (Convertitore) home.create();
double euro= convertitore.converti(8500);
System.out.println(“Risultato:”+euro);
}catch (Exception e){
System.out.println(e);
}
}
}
Ingegneria del Software I
Università La Sapienza
10
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
Ingegneria del Software I
Università La Sapienza
21
Gestione comunicazione
Ingegneria del Software I
Università La Sapienza
22
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
Ingegneria del Software I
Università La Sapienza
23
Gerarchia delle classi Bean
Ingegneria del Software I
Università La Sapienza
24
Tipi di entità
• Rappresenta dati mantenuti in un
database.
• Fornisce interfaccia object-oriented
al database
• Persistenza gestita
– dal container
– dal bean
Ingegneria del Software I
Università La Sapienza
25
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.
Ingegneria del Software I
Università La Sapienza
26
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à
Ingegneria del Software I
Università La Sapienza
28
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
Ingegneria del Software I
Università La Sapienza
29
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
Ingegneria del Software I
Università La Sapienza
30
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)
Ingegneria del Software I
Università La Sapienza
31