Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Facolt di Ingegneria
Corso di
Reti di Calcolatori M
CORBA - Implementazione
Politiche di Attivazione Lato Server
Luca Foschini
Anno accademico 2014/2015
AOM
Servant
Object Id
Object Id
Servant
POA B
AOM Servant
Object Id
CORBA Attivazione 3
CORBA Attivazione 4
Retention e Request Processing Policy
Retention policy: indica lutilizzo o meno dellAOM
RETAIN: memorizzazione di tutti gli Object Id nellAOM
NON_RETAIN: NON si usa AOM uso di Default Servant, o di
Servant Manager
servente
CORBA Attivazione 6
Servant Manager
5. distruzione
MyPOA MyPOA oggetto e servant
1. invio AOM Obj Id servant
richiesta Obj Id servant 3. creazione
servant, gestione
2. preinvoke richiesta, e
2. incarnate restituzione risultato
4. postinvoke
1. invio
MyServantActivator MyServantLocator
richiesta
Attivazione Localizzazione
Client Client
CORBA Attivazione 7
};
CORBA Attivazione 8
Esempio: Message - Oggetto Servente
public class MessageImpl extends MessagePOA
{
Realizzazione
org.omg.PortableServer.POA myPOA = null;
per estensione
public void splitMessage(
org.omg.CORBA.StringHolder msg,
org.omg.CORBA.StringHolder inizio,
java.lang.String separatore )
throws org.omg.CORBA.SystemException,
serverPack.MessageApp.ErroreApplicativo
{
StringTokenizer tok =
new StringTokenizer(msg.value, separatore); Logica
// inizio (out string) applicativa,
inizio.value = tok.nextToken(); unica parte
// msg (inout string) scritta dal
msg.value = tok.nextToken(); programmatore
}
}
CORBA Attivazione 9
}
CORBA Attivazione 11
Attivazione: MyServantActivator
public static class MyServantActivator
extends ServantActivatorPOA
{ // Metodo per lattivazione; invocato automaticamente
// alla prima attivazione delloggetto
public Servant incarnate(byte[] values, POA myPOA)
throws ForwardRequest {
System.out.println
("Richiesta di attivazione oggetto con ID "
+ new String(values));
return new MessageImpl(myPOA); Metodo incarnate
} Attivazione per lattivazione
delloggetto
// Metodo per liberare le risorse; invocato
// automaticamente alla disattivazione del POA
public void etherealize(byte[] values, POA myPOA,
Servant servant, boolean param, boolean param4) {
System.out.println("etherealize dell'oggetto con ID "
+ new String(values));
}
Metodo etherealize per la disattivazione (e.g.
} CORBA Attivazione 12
memorizzazione stato in DB); qui vuoto
Attivazione: Modifiche Applicazione Server
CORBA Attivazione 13
Localizzazione: Modifiche
Applicazione Server
Prima (vedi lucidi esercitazioni precedenti)
CORBA Attivazione 16
Localizzazione: myPOA e Servant Locator
2) creazione e configurazione myPOA, impostazione ServantLocator
POA my_poa = rootPOA.create_POA
("myPOA", rootPOA.the_POAManager(), policies);
// creazione e impostazione Servant Locator sul POA
MyServantLocator myLocator = new MyServantLocator();
ServantManager servant_manager_reference =
myLocator._this(orb);
my_poa.set_servant_manager(servant_manager_reference);