59
Übungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-Uebung-6.fm 2009-11-26 13.26 F.1 Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors. MW - Übung F Überblick über die 5. Übung F Überblick über die 5. Übung Namensdienst (CORBA Name Service) Portable Object Adapter (POA) Policies POA Schnittstelle Persistente Referenzen

Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Embed Size (px)

Citation preview

Page 1: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-Uebung-6.fm 2009-11-26 13.26

F.1Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F Überblick über die 5. Übung

F Überblick über die 5. Übung

■ Namensdienst (CORBA Name Service)

■ Portable Object Adapter (POA)

◆ Policies

◆ POA Schnittstelle

◆ Persistente Referenzen

Page 2: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.2Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

F.1 Der Namensdienst

■ Binden von Objektreferenzen an symbolische Namen (wie RMI-registry)

■ Hierarchischer Namensraum

Page 3: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.3Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

1 IDL-Schnittstellemodule CosNaming { //PIDL

typedef string Istring;struct NameComponent {

Istring id;Istring kind;

};typedef sequence <NameComponent> Name;

interface NamingContext {void bind(in Name n, in Object obj)

raises(NotFound, CannotProceed,InvalidName, AlreadyBound);

void rebind(in Name n, in Object obj)raises(NotFound, CannotProceed, InvalidName);

void bind_context(in Name n, in NamingContext nc)raises(NotFound, CannotProceed,

InvalidName, AlreadyBound);

// Fortsetzung folgt

Page 4: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.4Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

1 IDL-Schnittstelle (Fortsetzung)void rebind_context(in Name n, in NamingContext nc)

raises(NotFound, CannotProceed, InvalidName);void unbind(in Name n)

raises(NotFound, CannotProceed, InvalidName);

Object resolve(in Name n)raises(NotFound, CannotProceed, InvalidName);

NamingContext new_context();NamingContext bind_new_context(in Name n)

raises(NotFound, AlreadyBound,CannotProceed, InvalidName);

void destroy() raises(NotEmpty);

void list( in unsigned long how_many,out BindingList bl,out BindingIterator bi);

...}; // end of interface NamingContext...

}; // end of module CosNaming

Page 5: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.5Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

2 Hierarchie von Namenskontexten

■ Namenskontexte in mehreren Namensserver-Prozessen

Name Server Process Name Server Process

Naming ContextName Object ReferenceName Object Reference

Name Object Reference

Name Object ReferenceName Object ReferenceName Object Reference

Naming Context

Object ReferenceName

Object ReferenceName

Name Object ReferenceName Object Reference

Name Object ReferenceName Object Reference

Naming Context

Naming Context

Name Object ReferenceName Object ReferenceName Object Reference

Naming Context

Object ReferenceName

Object ReferenceNameObject ReferenceName

Page 6: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.6Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

3 Zugriff auf den "Root Naming Context"

■ ORB kennt die Referenz

■ ORB bekommt den Root Naming Context via Kommandozeilenparameteroder Properties

◆ Seit der "Interoperable Naming Service (INS)"-Spezifikation (Nov 2000)

◆ ORB wertet alle Parameter der Form form -ORB<suffix> <value>

◆ Für initiale Referenzen:

◆ Lesbare Objektreferenzen:

◆ Beispiel:

org.omg.CORBA.Object o =orb.resolve_initial_references("NameService");

org.omg.CosNaming.NamingContext root_context =org.omg.CosNaming.NamingContextHelper.narrow( o );

-ORBInitRef ObjectID=Reference

corbaloc:Protocol:Host:Port/ObjectId

-ORBInitRef NameService=corbaloc::faui40u.informatik.uni-erlangen.de:4711/NameService

Page 7: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.7Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Client mit Namensdienst

■ Bisher: ohne Namensdienst//Ausschnitt aus der main-Methode[...]

// Initialise ORBORB orb = ORB.init( args, null );// Read object reference from file Hello.iorBufferedReader br = new BufferedReader(

new FileReader("Hello.ior"));String s = br.readLine();// Create a stub objectorg.omg.CORBA.Object o = orb.string_to_object(s);// Narrow to the Hello interfaceHello hello = HelloHelper.narrow( o );

[...]

Page 8: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.8Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Client mit Namensdienst

■ Importieren eines zusätzlichen package

■ Änderungen an der main-Methode des Clients

import org.omg.CosNaming.*;

// Initialise ORBORB orb = ORB.init( args, null );// Get Name Service referenceorg.omg.CORBA.Object objRootContext =

orb.resolve_initial_references("NameService");// Narrow it to the NamingContext interfaceNamingContext rootContext =

NamingContextHelper.narrow( objRootContext );// Create a name as an array of NameComponent objectsNameComponent name[] = new NameComponent[2];name[0] = new NameComponent("pub", "");name[1] = new NameComponent("Hello", "");// Look the object uporg.omg.CORBA.Object o = rootContext.resolve(name);// Narrow to the Hello interfaceHello h = HelloHelper.narrow( o );

Page 9: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.9Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Client mit Namensdienst (2)

hello

orb

rootContext

java.lang.Object

org.omg.CORBA.ORBHelloClient

-orb:ORB

-hello:Hello

-rootContext:NamingContext

+main(args:String[]):void

HelloOperations

org.omg.CORBA.Object

org.omg.CORBA.portable.IDLEntity

interface

generated.Example.Hello

org.omg.CosNaming.NamingContextOperations

org.omg.CORBA.Object

org.omg.CORBA.portable.IDLEntity

interface

org.omg.CosNaming.NamingContext

Page 10: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.10Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Client mit Namensdienst (3)

■ Compilieren

■ Starten

> idlj Hello.idl [min JDK 1.4]oder> idl Hello.idl [/local/JacORB/bin/idl JacORB-2.1]

> javac HelloClient.java [immer]

> java -Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \

-DJACORB_HOME=/local/JacORB-2.1HelloClient HelloClient \-ORBInitRef.NameService=\http://www4.informatik.uni-erlangen.de/Lehre/WS09/V_MW/Nameservice.ior [minJDK 1.4, JacORB]

Page 11: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.11Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server - ohne Namensdienst// server/HelloServer.javaimport generated.Example.*;import org.omg.CORBA.*;import java.io.*;import org.omg.PortableServer.*;

public class HelloServer {public static void main( String[] args ) {

try {// Initialize ORBORB orb = ORB.init( args, null );

// Get the RootPOAPOA poa = POAHelper.narrow(

orb.resolve_initial_references( "RootPOA" ));

// Activate the RootPOApoa.the_POAManager().activate();

// Create the hello servant objectHelloServant hServ = new HelloServant();

// Activate the objectorg.omg.CORBA.Object obj =

poa.servant_to_reference(hServ);// Fortsetzung folgt

Page 12: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.12Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server - ohne Namensdienst (2)// Write referencePrintWriter pw = new PrintWriter(new FileWriter(

"/proj/i4mw/pub/hello/Hello.ior"));pw.println( orb.object_to_string( obj) );pw.close();

// Wait for requestorb.run();

} catch( org.omg.CORBA.SystemException e ) {//...

}catch( Throwable t ) {//...

}} // end of method main

} // end of class HelloServer

Page 13: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.13Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server mit Namensdienst// server/HelloServer.javaimport generated.Example.*;import org.omg.CORBA.*;import org.omg.CosNaming.*;import org.omg.PortableServer.*;

public class HelloServer {public static void main( String[] args ) {

try {// Initialize ORBORB orb = ORB.init( args, null );

// Get the RootPOAPOA poa = POAHelper.narrow(

orb.resolve_initial_references( "RootPOA" ));

// Activate the RootPOApoa.the_POAManager().activate();

// Create the hello servant objectHelloServant hServ = new HelloServant();

// Activate the objectorg.omg.CORBA.Object obj =

poa.servant_to_reference(hServ);

Page 14: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.14Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server mit Namensdienst// Get Name Service referenceorg.omg.CORBA.Object obj_root_context =

orb.resolve_initial_references("NameService");// Narrow it to the NamingContext interfaceroot_context = NamingContextHelper.narrow(

obj_root_context );// Create a name as an array of NameComponentsNameComponent name[] = new NameComponent[2];name[0] = new NameComponent("pub", "");name[1] = new NameComponent("Hello", "");

// Create NamingContext for "pub" !....// Register the Hello objectroot_context.rebind(name, obj);

// Wait for requestorb.run();

} catch( org.omg.CORBA.SystemException e ) {//...

}catch( Throwable t ) {

Page 15: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.15Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server mit Namensdienst

hello_servant

root_poa

orb

root_context

HelloServer

-orb:ORB

-root_poa:POA

-hello_servant:HelloServant

-root_context:NamingContext

+main(args:String[]):void

org.omg.PortableServer.Servant

org.omg.CORBA.portable.InvokeHandler

HelloOperations

generated.Example.HelloPOA

HelloServant

+HelloServant()

+say(msg:String):String

org.omg.PortableServer.POAOperations

org.omg.CORBA.Object

org.omg.CORBA.portable.IDLEntity

interface

org.omg.PortableServer.POA

java.lang.Object

org.omg.CORBA.ORB

org.omg.CosNaming.NamingContextOperations

org.omg.CORBA.Object

org.omg.CORBA.portable.IDLEntity

interface

org.omg.CosNaming.NamingContext

Page 16: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.16Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

4 "Hello World"-Server mit Namensdienst

■ Kompilieren

■ Starten

> idl -fall Hello.idl> javac HelloServer.java

> java-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB \-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton \-DJACORB_HOME=/local/JacORB-2.1 HelloServer -ORBInitRef.NameService=\http://www4.informatik.uni-erlangen.de/Lehre/WS09/V_MW /Nameservice.ior

Page 17: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.17Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.1 Der Namensdienst

5 Zusammenfassung

■ Binden von Objektreferenzen an Namen

■ "Naming Contexts" sind normale CORBA-Objekte (IDL-Interface)

■ "Naming Contexts" residieren in Namensdienst-Prozessen

■ Konfiguration des "Root Naming Context" für eine Anwendung überKommandozeilenparameter

Page 18: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.18Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

F.2 Portable Object Adaptor (POA)

■ Aktivierungsschemas

■ POA-Schnittstelle

■ Persistente Referenzen

Page 19: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.19Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

1 CORBA-Objekt-Lebenszyklus

■ Zustandsdiagramm für den Lebenszyklus

◆ OA muss bei Ankunft eines Anforderung den Servant erzeugen und dasObjekt aktivieren

Object Exists

Object Activated

Servant Incarnated/

Object Deactivated

Servant Etherialized/

Object Non-existentObject Non-existent

Object Activation

"Destruction"

Object Deactivation

Reference Creation

Page 20: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.20Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

2 POA-Manager

■ Der Betrieb des POA wird vom "POA-Manager" gesteuert

■ Zustände des POA-Manager

■ Ein POA-Manager für mehrere POAs möglich

Holding

Active

Discarding

InactivePOA::create_POAPOAManager::hold_requests

POAManager::activate

POAManager::hold_requests

POAManager::discard_requests

POAManager::discard_requests

POAManager::activate

POA::destroy

POAManager::deactivate

POAManager::deactivate

POAManager::deactivate

Page 21: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.21Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

3 POA-Erzeugung

■ IDL-Schnittstelle:

■ Policies beeinflussen die Arbeitsweise des POA

■ Ein Root-POA existiert bereits im ORB

module PortableServer { //PIDLinterface POAManager;exception AdapterAlreadyExists {};exception InvalidPolicy { unsigned short index; };

interface POA {POA create_POA(in string adapter_name,

in POAManager manager,in CORBA::PolicyList policies )

raises(AdapterAlreadyExists, InvalidPolicy);...

};};

org.omg.CORBA.Object o =orb.resolve_initial_references("RootPOA" );

org.omg.PortableServer.POA root_poa =org.omg.PortableServer.POAHelper.narrow( o );

Page 22: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.22Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

3 POA-Erzeugung

■ Hierarchie

ORB

POA"MyPOA"

Server Process

POA"BazPOA"

POARoot

POA"FooPOA"

POAManager

managescreates

createsmanages

manages

ManagerPOA

Page 23: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.23Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

4 POA-Policies

■ IDL:module CORBA {

typedef unsigned long PolicyType;

interface Policy {readonly attribute PolicyType policy_type;

Policy copy();void destroy();

};typedef sequence<Policy> PolicyList;

};

Page 24: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.24Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

5 Lebensdauer-Policy (Lifespan)

■ IDL:

■ Ein einzelner POA kann entweder persistente oder transiente Objekteunterstützen, nicht beides

■ Persistente Objekte

◆ ORB und Implementation Repository müssen die Objekte verfolgen

◆ Zusätzliche Informationen für die Reaktivierung wird gespeichert

■ Default-Wert: TRANSIENT

module PortableServer {enum LifespanPolicyValue {

TRANSIENT, PERSISTENT};interface LifespanPolicy : CORBA::Policy {

readonly attribute LifespanPolicyValue value;};

};

Page 25: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.25Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

6 Objekt-Identifikatoren

■ Objekte werden über Objektreferenzen identifiziert

Object Reference Type Profile 2Profile 1, e.g. IIOP Profile ...

Contact Information, e.g. IP-Address/TCP-Port Object Key

...

Profile

y O b j e c

POA Path, e.g. "/FooPOA/BazPOA"

t

Object Identifier

M

Object Key

Object Identifier

Page 26: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.26Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

6 Objekt-Identifikatoren (2)

■ Objekt-IDs werden festgelegt durch:

◆ den POA (SYSTEM_ID)

◆ die Anwendung (USER_ID), z.B. wenn Objekte auf Datenbank abgebildetwerden

■ IDL:

■ Default-Wert: SYSTEM_ID

module PortableServer {enum IdAssignmentPolicyValue {

SYSTEM_ID, USER_ID};interface IdAssignmentPolicy : CORBA::Policy {

readonly attribute IdAssignmentPolicyValue value;};

};

Page 27: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.27Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

7 Abbildung von Objekten zu Servants

■ Beziehung zwischen Objekt-IDs und Servants

◆ UNIQUE_ID: Eins-zu-eins-Beziehung zwischen Objekten und Servants

◆ MULTIPLE_ID: Es kann mehrere CORBA-Objekte (und daher mehrereObjekt-IDs) geben, die durch den selben Servant implementiert werden

■ IDL:

■ Default-Wert: UNIQUE_ID

module PortableServer {enum IdUniquenessPolicyValue {

UNIQUE_ID, MULTIPLE_ID};interface IdUniquenessPolicy : CORBA::Policy {

readonly attribute IdUniquenessPolicyValue value;};

};

Page 28: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.28Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

8 Implizite Aktivierung

■ Aktivierung über eine spezielle Skeleton-Methode (in Java: _this())

■ IDL:

■ Default-Wert: NO_IMPLICIT_ACTIVATION

■ Ausnahme: RootPOA verwendet IMPLICIT_ACTIVATION

module PortableServer {enum ImplicitActivationPolicyValue {

IMPLICIT_ACTIVATION, NO_IMPLICIT_ACTIVATION};interface ImplicitActivationPolicy : CORBA::Policy {

readonly attribute ImplicitActivationPolicyValuevalue;

};};

Page 29: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.29Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

9 Abbildung von Requests auf Servants

■ POA kann aktive Servants in einem Active Object Map speichern

◆ Nur Objekte, die in der Active Object Map registriert sind, existieren

◆ POA erzeugt sonst CORBA::OBJECT_NOT_EXIST-Exception

◆ Policy: USE_ACTIVE_OBJECT_MAP_ONLY

Object ID Servant Pointer

Object ID Servant PointerObject ID Servant Pointer

Servants

Object ID Servant PointerObject ID Servant Pointer

Object ID Servant Pointer

Object ID Servant Pointer

Object ID Servant PointerObject ID Servant Pointer

Object ID

Object Identifier

Object ReferencePOA Active Object Map

Page 30: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.30Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

9 Abbildung von Requests auf Servants

■ Für dynamische Aktivierung stellt die Anwendung dem POA einenServant-Manager zur Verfügung

◆ Servant-Manager wird befragt, falls die Objekt-ID nicht in der Active ObjectMap gefunden wird

◆ Servant-Manager kann entweder einen Servant für das Objekt liefern, odereine Exception erzeugen (CORBA::OBJECT_NOT_EXIST)

◆ Policy: USE_SERVANT_MANAGER

■ Die Abbildung stellt einen Default-Servant – es gibt keine Active ObjectMap

◆ Alle Anforderungen werden an den Default-Servant geschickt

◆ Dynamic Skeleton Interface (DSI) wird zur Bearbeitung der Anforderungenverwendet

◆ Policy: USE_DEFAULT_SERVANT

Page 31: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.31Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

9 Abbildung von Requests auf Servants

■ IDL:

■ Default-Wert: USE_ACTIVE_OBJECT_MAP_ONLY

module PortableServer {enum RequestProcessingPolicyValue {

USE_ACTIVE_OBJECT_MAP_ONLY,USE_DEFAULT_SERVANT,USE_SERVANT_MANAGER

};interface RequestProcessingPolicy : CORBA::Policy {

readonly attribute RequestProcessingPolicyValuevalue;

};};

Page 32: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.32Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

10 Speicherung der Beziehung Objekt-ID zu Servant

■ Soll der POA Servants in der Active Object Map speichern?

■ Ja (RETAIN): POA durchsucht Active Object Map

■ Nein (NON_RETAIN): POA verlässt sich auf Default-Servant oderServant-Manager, um eine Zuordnung zu erhalten

■ IDL:

■ Default-Wert: RETAIN

module PortableServer {enum ServantRetentionPolicyValue {

RETAIN, NON_RETAIN};interface ServantRetentionPolicy : CORBA::Policy {

readonly attribute ServantRetentionPolicyValuevalue;

};};

Page 33: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.33Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

11 Multithreading

■ Wie werden Requests zu Threads zugeordnet?

■ IDL:

■ Default-Wert: ORB_CTRL_MODEL

module PortableServer {enum ThreadPolicyValue {

ORB_CTRL_MODEL, SINGLE_THREAD_MODEL};interface ThreadPolicy : CORBA::Policy {

readonly attribute ThreadPolicyValue value;};

};

Page 34: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.34Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

12 Nützliche Kombinationen von Policies

■ Manche Kombinationen machen keinen Sinn, in diesen Fällen schlägt diePOA-Erzeugung fehl.

■ PERSISTENT wird oft zusammen mit USER_ID verwendet

◆ Servant kann leichter wiederhergestellt werden, wenn die Objekt-ID einenSchlüssel zum Finden der Servant-Daten enthält

■ IMPLICIT_ACTIVATION erfordert SYSTEM_ID

◆ Wo soll die Objekt-ID herkommen?

■ NON_RETAIN nicht mit USE_ACTIVE_OBJECT_MAP_ONLY

◆ Welcher Servant soll verwendet werden?

Page 35: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.35Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

13 Einfacher POA ohne implizite Aktivierung

POA

ORB

MyServant

Server Code

Remove from Active Object Map

Find in Active Object Map

Add to Active Object Map

Dispatch Remote Call

Destroy Servant

deactivate_object(byte[]):void

id_to_reference(byte[]):org.omg.CORBA.Object

activate_object(org.omg.PortableServer.Servant):byte[]

new

Invoke the Real Method

_invoke

Page 36: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.36Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

14 POA mit Servant-Activator

■ Policies:

◆ USE_SERVANT_MANAGER

◆ RETAIN

■ Anwendung aktiviert Objekte nach Bedarf via Servant-Manager

■ Anwendung kann Objekte nach ihrer eigenen Strategie deaktivieren

ORBServer Code

POA

MyServantActivator

set_servant_manager(org.omg.PortableServer.ServantManager):void

create_reference_with_id(byte[],java.lang.String):org.omg.CORBA.Object

new

Page 37: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.37Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

14 POA mit Servant-Activator

MyServant

Invoke Real Method

Invoke Real Method

Destroy Servant

new

Add to Active Object Map

Remove from Active Object Map etherealize(byte[],POA,Servant,boolean,boolean):void

_invoke Find in Active Object Map

_invoke

Find in Active Object Map incarnate(byte[],POA):Servant

deactivate_object(byte[]):void

Dispatch Remote Call

Dispatch Remote Call

Page 38: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.38Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

14 POA mit Servant-Activator

■ Servant-Manager ist ein Servant-Activator (abgeleitete Schnittstelle)

interface

org.omg.PortableServer.ServantManagerOperations

interface

org.omg.PortableServer.ServantActivatorOperations

+incarnate(:byte[],:org.omg.PortableServer.POA):org.omg.Porta

+etherealize(:byte[],:org.omg.PortableServer.POA,:org.omg.Po

org.omg.PortableServer.Servant

org.omg.CORBA.portable.InvokeHandler

org.omg.PortableServer.ServantActivatorPOA

MyServantActivator

+incarnate(id:byte[],poa:POA):Servant

+etherealize(id:byte[],poa:POA,servant:Servant,par4:boolea

Page 39: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.39Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

15 POA mit Servant-Locator

■ Policies:

◆ USE_SERVANT_MANAGER

◆ NON_RETAIN

■ POA hat keine "Active Object Map"

■ Servant-Locator wird vor und nach jedem Request befragt

■ Servant-Locator implementiert eigene Active Object Map

Server Code

POA

ORB

MyServantLocator

create_reference_with_id(byte[],java.lang.String):org.omg.CORBA.Object

set_servant_manager(org.omg.PortableServer.ServantManager):void

new

Page 40: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.40Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

15 POA mit Servant-Locator

MyServant

Dispatch Remote Call

Dispatch Remote Call

Invoke Real Method

Invoke Real Method

_invoke

_invoke

Find Servant

Destroy Servant Decide to destroy Servant

Find Servant

new

postinvoke(byte[],POA,String,Object,Servant):void

preinvoke(byte[],POA,String,CookieHolder):Servant

postinvoke(byte[],POA,String,Object,Servant):void

preinvoke(byte[],POA,String,CookieHolder):Servant

Page 41: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.41Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

15 POA mit Servant-Locator

■ Servant-Manager ist ein Servant-Locator (abgeleitete Schnittstelle)

interface

org.omg.PortableServer.ServantManagerOperations

interface

org.omg.PortableServer.ServantLocatorOperations

+preinvoke(:byte[],:org.omg.PortableServer.POA,:java.lang.Stri

+postinvoke(:byte[],:org.omg.PortableServer.POA,:java.lang.St

org.omg.PortableServer.Servant

org.omg.CORBA.portable.InvokeHandler

org.omg.PortableServer.ServantLocatorPOA

MyServantLocator

+preinvoke(id:byte[],poa:POA,op:String,cookie:CookieHolder)

+postinvoke(id:byte[],poa:POA,op:String,cookie:Object,servan

Page 42: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.42Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

16 POA mit Default-Servant

■ Policies:

◆ USE_DEFAULT_SERVANT

◆ NON_RETAIN

■ POA hat keine Active Object Map

■ Anwendung stellt Default-Servant zur Verfügung

■ Default-Servant bekommt vom POA jeden Request und verarbeitet ihnmit Hilfe des Dynamic Skeleton Interface (DSI)

Page 43: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.43Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

17 POA-Schnittstelle

■ POA-Attribute

■ POA-Erzeugung

readonly attribute string the_name;readonly attribute POA the_parent;readonly attribute POAList the_children;readonly attribute POAManager the_POAManager;attribute AdapterActivator the_activator;

POA create_POA(in string adapter_name,in POAManager a_POAManager,in CORBA::PolicyList policies)

raises (AdapterAlreadyExists, InvalidPolicy);POA find_POA( in string adapter_name,

in boolean activate_it)raises (AdapterNonExistent);

void destroy( in boolean etherealize_objects,in boolean wait_for_completion);

Page 44: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.44Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

17 POA-Schnittstelle (2)

■ Policy factory-OperationenLifespanPolicy create_lifespan_policy(

in LifespanPolicyValue value);IdAssignmentPolicy create_id_assignment_policy(

in IdAssignmentPolicyValue value);IdUniquenessPolicy create_id_uniqueness_policy(

in IdUniquenessPolicyValue value);ImplicitActivationPolicy create_implicit_activation_policy(

in ImplicitActivationPolicyValue value);RequestProcessingPolicy create_request_processing_policy(

in RequestProcessingPolicyValue value);ServantRetentionPolicy create_servant_retention_policy(

in ServantRetentionPolicyValue value);ThreadPolicy create_thread_policy(

in ThreadPolicyValue value);

Page 45: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.45Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

17 POA-Schnittstelle (3)

■ Servant-Manager-Operationen

■ Default-Servant-Operationen

■ Operationen zur Objektaktivierung und -deaktivierung

ServantManager get_servant_manager() raises (WrongPolicy);void set_servant_manager(in ServantManager imgr)

raises (WrongPolicy);

Servant get_servant() raises (NoServant, WrongPolicy);void set_servant(in Servant p_servant)

raises (WrongPolicy);

ObjectId activate_object(in Servant p_servant)raises (ServantAlreadyActive, WrongPolicy);

void activate_object_with_id(in ObjectId id,in Servant p_servant)

raises (ServantAlreadyActive,ObjectAlreadyActive, WrongPolicy);

void deactivate_object(in ObjectId oid)raises (ObjectNotActive, WrongPolicy);

Page 46: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.46Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

17 POA-Schnittstelle (4)

■ Operationen zur Abbildung der ID

■ Operationen zur Erzeugung von Referenzen

ObjectId servant_to_id(in Servant p_servant)raises (ServantNotActive, WrongPolicy);

Object servant_to_reference(in Servant p_servant)raises (ServantNotActive, WrongPolicy);

Servant reference_to_servant(in Object reference)raises(ObjectNotActive, WrongPolicy);

ObjectId reference_to_id(in Object reference)raises (WrongAdapter, WrongPolicy);

Servant id_to_servant(in ObjectId oid)raises (ObjectNotActive, WrongPolicy);

Object id_to_reference(in ObjectId oid)raises (ObjectNotActive, WrongPolicy);

Object create_reference(in CORBA::RepositoryId intf)raises (WrongPolicy);

Object create_reference_with_id(in ObjectId oid,in CORBA::RepositoryId intf)

raises (WrongPolicy);

Page 47: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.47Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Server-Prozess startet und fordert beim POA die Erzeugung einerReferenz an

ORB

Server Process at host2:1234

POA

ImplementationRepository

at host2:4711

Page 48: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.48Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Persistenter POA registriert Server im Implementation Repository (IR)

ORB

Server Process at host2:1234

POA

ImplementationRepository

at host2:4711

Page 49: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.49Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Server speichert die vom POA erzeugte persistente Objektreferenz

ORB

Server Process at host2:1234Object

POA

Reference

ImplementationRepository

at host2:4711

forhost2:4711

Page 50: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.50Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Server wird beendet

ObjectReference

ImplementationRepository

at host2:4711

forhost2:4711

Page 51: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.51Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Client wird gestartet und liest die Objekt-Referenz

ObjectReference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

Page 52: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.52Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Client ruft eine Operation auf

ObjectReference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

Page 53: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.53Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Aufruf-Anforderung wird an die Kontaktadresse (d.h. IR) gesendet

ObjectReference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPRequestMessage

Page 54: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.54Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ IR startet Server-Prozess

ORB

Server Process at host2:9876Object

POA

Reference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPRequestMessage

Page 55: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.55Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ POA registriert nun neue Kontakt-Adresse im IR

ORB

Server Process at host2:9876Object

POA

Reference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPRequestMessage

Page 56: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.56Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ IR liefert "location forward"-Nachricht mit neuer Kontaktadresse

ORB

Server Process at host2:9876Object

POA

Reference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPLocationReply

Messagewith host2:9876

Page 57: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.57Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Aufruf wird an die neue Kontaktadresse gesendet und dort ausgeführt

ORB

Server Process at host2:9876Object

POA

Reference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPRequestMessage

Page 58: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.58Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

18 Persistente Referenzen

■ Das Ergebnis wird zum Client zurückgeschickt

ORB

Server Process at host2:9876Object

POA

Reference

ImplementationRepository

at host2:4711

Client Process at host1

ORB

forhost2:4711

IIOPReply

Message

Page 59: Namensdienst (CORBA Name Service) Portable Object Adapter ... fileÜbungen zu Middleware ©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

Übungen zu Middleware©Universität Erlangen-Nürnberg • Informatik 4, 2009 G-CORBA-NS-POA.fm 2009-11-26 17.33

F.59Reproduktion jeder Art oder Verwendung dieser Unterlage, außer zu Lehrzwecken an der Universität Erlangen-Nürnberg, bedarf der Zustimmung des Autors.

MW

- Ü

bu

ng

F.2 Portable Object Adaptor (POA)

19 Zusammenfassung POA

■ Hierarchie aus POAs

■ Viele verschiedene Policies

■ Viele Arten von Anfrage-Bearbeitung und Servant-Verwaltungsstrategiensind möglich

■ Persistente Referenzen via Implementation Repository