0% found this document useful (1 vote)
128 views15 pages

Slides For Chapter 20: CORBA Case Study: Distributed Systems: Concepts and Design

4 Ed - Chapter CORBA Slides

Uploaded by

Muhammad Farooq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (1 vote)
128 views15 pages

Slides For Chapter 20: CORBA Case Study: Distributed Systems: Concepts and Design

4 Ed - Chapter CORBA Slides

Uploaded by

Muhammad Farooq
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 15

Slides for Chapter 20:

CORBA Case Study

From Coulouris, Dollimore and Kindberg


Distributed Systems:
Concepts and Design
Edition 4, Addison-Wesley 2005
Figure 20.1
IDL interfaces Shape and ShapeList

structRectangle{ 1 structGraphicalObject{ 2
longwidth; stringtype;
longheight; Rectangleenclosing;
longx; booleanisFilled;
longy; };
};

interfaceShape{ 3
longgetVersion();
GraphicalObjectgetAllState(); //returnsstateoftheGraphicalObject
};

typedefsequence<Shape,100>All; 4
interfaceShapeList{ 5
exceptionFullException{}; 6
ShapenewShape(inGraphicalObjectg)raises(FullException); 7
AllallShapes();InstructorsGuideforCoulouris,Dollimore
//returnssequenceofremoteobjectreferences 8
longgetVersion();
};
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.2
Java interfaces generated by idlj from CORBA interface ShapeList

publicinterfaceShapeListOperations{
ShapenewShape(GraphicalObjectg)throwsShapeListPackage.FullException;
Shape[]allShapes();
intgetVersion();
}

publicinterfaceShapeListextendsShapeListOperations,org.omg.CORBA.Object,
org.omg.CORBA.portable.IDLEntity{}

InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.3
ShapeListServant class of the Java server program for CORBA interface ShapeList

importorg.omg.CORBA.*;
importorg.omg.PortableServer.POA;
classShapeListServantextendsShapeListPOA{
privatePOAtheRootpoa;
privateShapetheList[];
privateintversion;
privatestaticintn=0;
publicShapeListServant(POArootpoa){
theRootpoa=rootpoa;
//initializetheotherinstancevariables
} InstructorsGuideforCoulouris,Dollimore
//continuedonthenextslide
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.3 continued

publicShapenewShape(GraphicalObjectg)
throwsShapeListPackage.FullException{ 1
version++;
Shapes=null;
ShapeServantshapeRef=newShapeServant(g,version);
try{
org.omg.CORBA.Objectref=
theRoopoa.servant_to_reference(shapeRef); 2
s=ShapeHelper.narrow(ref);
}catch(Exceptione){}
if(n>=100)thrownewShapeListPackage.FullException();
theList[n++]=s;
InstructorsGuideforCoulouris,Dollimore
returns;
} andKindbergDistributedSystems:Concepts
publicShape[]allShapes(){...}
andDesignEdn.4
publicintgetVersion(){...}
PearsonEducation2005
}
Figure 20.4 Java class ShapeListServer

importorg.omg.CosNaming.*;importorg.omg.CosNaming.NamingContextPackage.*;
importorg.omg.CORBA.*;importorg.omg.PortableServer.*;
publicclassShapeListServer{
publicstaticvoidmain(Stringargs[]){
try{
ORBorb=ORB.init(args,null); 1

POArootpoa=POAHelper.narrow(orb.resolve_initial_references("RootPOA"));2
rootpoa.the_POAManager().activate(); 3
ShapeListServantSLSRef=newShapeListServant(rootpoa); 4
org.omg.CORBA.Objectref=rootpoa.servant_to_reference(SLSRef); 5
ShapeListSLRef=ShapeListHelper.narrow(ref);
org.omg.CORBA.ObjectobjRef=orb.resolve_initial_references("NameService");

InstructorsGuideforCoulouris,Dollimore 6
NamingContextncRef=NamingContextHelper.narrow(objRef);
andKindbergDistributedSystems:Concepts 7
NameComponentnc=newNameComponent("ShapeList","");
andDesignEdn.4
NameComponentpath[]={nc}; 8
ncRef.rebind(path,SLRef);
PearsonEducation2005 9
orb.run(); 10
Figure 20.5
Java client program for CORBA interfaces Shape and ShapeList

importorg.omg.CosNaming.*;
importorg.omg.CosNaming.NamingContextPackage.*;
importorg.omg.CORBA.*;
publicclassShapeListClient{
publicstaticvoidmain(Stringargs[]){
try{
ORBorb=ORB.init(args,null); 1
org.omg.CORBA.ObjectobjRef=
orb.resolve_initial_references("NameService");
NamingContextncRef=NamingContextHelper.narrow(objRef);
NameComponentnc=newNameComponent("ShapeList","");
NameComponentpath[]={nc};
ShapeListshapeListRef=
ShapeListHelper.narrow(ncRef.resolve(path)); 2
InstructorsGuideforCoulouris,Dollimore
Shape[]sList=shapeListRef.allShapes(); 3
andKindbergDistributedSystems:Concepts4
GraphicalObjectg=sList[0].getAllState();
}catch(org.omg.CORBA.SystemExceptione){...}
andDesignEdn.4
}
PearsonEducation2005
Figure 20.6
The main components of the CORBA architecture

client server
implementation interface
repository repository object skeleton
adapter

client proxy Request ORB Servant


ORB
program for A core core A
Reply

or dynamic invocation or dynamic skeleton

InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.7
IDL module Whiteboard

moduleWhiteboard{
structRectangle{
...};
structGraphicalObject{
...};
interfaceShape{
...};
typedefsequence<Shape,100>All;
interfaceShapeList{
...};
}; InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.8
IDL constructed types 1

Type Examples Use


sequence typedefsequence<Shape,100>All; Definesatypeforavariablelength
typedefsequence<Shape>All sequenceofelementsofaspecified
boundedandunboundedsequences IDLtype.Anupperboundonthe
ofShapes lengthmaybespecified.

string Stringname; Definesasequencesofcharacters,


typedefstring<8>SmallString; terminatedbythenullcharacter.An
unboundedandbounded upperboundonthelengthmaybe
sequencesofcharacters specified.

array typedefoctetuniqueId[12]; Definesatypeforamultidimensional


typedefGraphicalObjectGO[10][8] fixedlengthsequenceofelementsofa
specifiedIDLtype.
InstructorsGuideforCoulouris,Dollimore
thisfigurecontinuesonthenextslide
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.8
IDL constructed types 2

Type Examples Use


record structGraphicalObject{ Definesatypeforarecordcontaininga
stringtype;
groupofrelatedentities.Structsare
Rectangleenclosing;
passedbyvalueinargumentsand
booleanisFilled;
results.
};

enumerated enumRand TheenumeratedtypeinIDLmapsa


(Exp,Number,Name); typenameontoasmallsetofinteger
values.
union unionExpswitch(Rand){ TheIDLdiscriminatedunionallows
caseExp:stringvote;
oneofagivensetoftypestobepassed
caseNumber:longn;
asanargument.Theheaderis
caseName:strings; parameterizedbyan enum,which
InstructorsGuideforCoulouris,Dollimore
}; specifieswhichmemberisinuse.
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Page 842
CORBA interoperable object references

IORformat

IDLinterfacetypename Protocolandaddressdetails Objectkey


interfacerepository IIOP hostdomain portnumber adaptername objectname
identifier name

InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.9
Naming graph in CORBA Naming Service

initial naming context initial naming context initial naming context

ShapeList B XX V
P
C
D E S T
R Q U

InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005
Figure 20.10
Part of the CORBA Naming Service NamingContext interface in IDL

structNameComponent{stringid;stringkind;};

typedefsequence<NameComponent>Name;

interfaceNamingContext{
voidbind(inNamen,inObjectobj);
bindsthegivennameandremoteobjectreferenceinmycontext.
voidunbind(inNamen);
removesanexistingbindingwiththegivenname.
voidbind_new_context(inNamen);
createsanewnamingcontextandbindsittoagivennameinmycontext.
Objectresolve(inNamen);
looksupthenameinmycontextandreturnsitsremoteobjectreference.
InstructorsGuideforCoulouris,Dollimore
voidlist(inunsignedlonghow_many,outBindingListbl,outBindingIteratorbi);
andKindbergDistributedSystems:Concepts
returnsthenamesinthebindingsinmycontext.
}; andDesignEdn.4
PearsonEducation2005
Figure 20.11
CORBA event channels

event channel
supplier consumer

notification notification notification


proxy consumer proxy supplier

InstructorsGuideforCoulouris,Dollimore
andKindbergDistributedSystems:Concepts
andDesignEdn.4
PearsonEducation2005

You might also like