Download presentation
Presentation is loading. Please wait.
1
95-702 OCT 1 Master of Information System Management Organizational Communications and Distributed Object Technologies Lecture 13: CORBA
2
95-702 OCT 2 Master of Information System Management CORBA Chapter 20 Coulouris text
3
95-702 OCT 3 Master of Information System Management Today’s Topics CORBA History and goals CORBA RMI CORBA services The Distributed Whiteboard Revisited
4
95-702 OCT 4 Master of Information System Management CORBA History and Goals Object Management Group Formed in 1989 Goals: -- OOP on distributed systems -- heterogeneous hardware -- heterogeneous OS -- different programming languages
5
95-702 OCT 5 Master of Information System Management History and Goals OMG Introduced the Object Request Broker (ORB) The role of the ORB is to help a client find an object, activate the object if necessary, and call a method on the object. Common Object Request Broker Architecture (CORBA) agreed to by a group of companies in 1991 CORBA 2.0 specification released in 1996
6
95-702 OCT 6 Master of Information System Management History and Goals CORBA 2.0 specification defined standards for different implementations of CORBA to communicate with one another These standards are called the General Inter-ORB protocol (GIOP) and may run over various transports GIOP over TCP/IP is called the Internet Inter-ORB Protocol
7
95-702 OCT 7 Master of Information System Management CORBA RMI Main components -- An Interface Definition language (IDL) that promotes the use of different programming languages, stubs are generated in the client’s language and skeletons are generated in the server’s language -- An architecture -- GIOP defines an external data representation (CDR) as well as message formats and message types -- Message types include request and reply as well as location requests, errors, and request cancellations
8
95-702 OCT 8 Master of Information System Management CORBA Services A set of generic services that can be used for distributed application -- Naming Service (location by name) -- Trading Service (location by attribute - directory service) -- Event Service -- Security Service (authentication, ACL’s, auditing, non- repudiation) -- Transaction Service (begin, commit, rollback a series of RMI calls using the Two Phase Commit Protocol) -- Persistent Object Service (POS)
9
95-702 OCT 9 Master of Information System Management The Distributed Whiteboard Example in CORBA
10
95-702 OCT 10 Master of Information System Management IDL Interfaces Shape and ShapeList struct Rectangle{ // no class in IDL 1 long width; long height; long x; long y; } ; struct GraphicalObject {2 string type; Rectangle enclosing; boolean isFilled; }; interface Shape {3 long getVersion() ; GraphicalObject getAllState() ; // returns state of the GraphicalObject }; typedef sequence All; // All is a 100 element array4 interface ShapeList {5 exception FullException{ }; 6 Shape newShape(in GraphicalObject g) raises (FullException);7 All allShapes(); // returns sequence of remote object references8 long getVersion() ; // parameters are in, out, or both }; // parameters may be primitive, struct or array and // are passed by value // parameters whose type is an IDL interface // is passed by remote reference
11
95-702 OCT 11 Master of Information System Management The “idltojava” tool Run idltojava on the above interface. The command idlj is found in j2sdk1.4.2\bin. The Java 2 Platform, Standard Edition, v1.4, provides an Object Request Broker (ORB) runtime component. The JDK documentation states that its Java ORB has not been tested with ORB’s written in other languages. JDK 1.4 provides an Orb class with a pluggable architecture.
12
95-702 OCT 12 Master of Information System Management From IDL to Your Language of Choice The OMG specifies a mapping from IDL to several different programming languages, including Java, C, C++, Lisp, Python, Smalltalk, COBOL, and Ada. When mapped, statements in the OMG IDL are translated to corresponding statements in the programming language of choice. From JDK Documentation The IDL and the IDL compiler give CORBA its interoperability. IDLIDL CompilerProxy Quiz: How does this compare with Web Services?
13
95-702 OCT 13 Master of Information System Management Java Interface ShapeList Generated by idltojava from CORBA Interface ShapeList public interface ShapeList extends org.omg.CORBA.Object { Shape newShape(GraphicalObject g) throws ShapeListPackage.FullException; Shape[] allShapes(); int getVersion(); }
14
95-702 OCT 14 Master of Information System Management ShapeListServant.java Written by a Java Developer import org.omg.CORBA.*; class ShapeListServant extends _ShapeListImplBase { ORB theOrb; private Shape theList[]; private int version; private static int n=0; public ShapeListServant(ORB orb){ theOrb = orb; // initialize the other instance variables } public Shape newShape(GraphicalObject g) throws ShapeListPackage.FullException {1 version++; Shape s = new ShapeServant( g, version); if(n >=100) throw new ShapeListPackage.FullException(); theList[n++] = s;2 theOrb.connect(s); return s; } public Shape[] allShapes(){... } public int getVersion() {... } } Note how it talks to the CORBA Object Request Broker.
15
95-702 OCT 15 Master of Information System Management ShapeListServer.java import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; public class ShapeListServer { public static void main(String args[]) { try{ ORB orb = ORB.init(args, null);1 ShapeListServant shapeRef = new ShapeListServant(orb);2 orb.connect(shapeRef);3 org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); 4 NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("ShapeList", "");5 NameComponent path[] = {nc};6 ncRef.rebind(path, shapeRef); 7 java.lang.Object sync = new java.lang.Object(); synchronized (sync) { sync.wait();} } catch (Exception e) {... } } Note the call on rebind.
16
95-702 OCT 16 Master of Information System Management ShapeListClient.java import org.omg.CosNaming.*; import org.omg.CosNaming.NamingContextPackage.*; import org.omg.CORBA.*; public class ShapeListClient{ public static void main(String args[]) { try{ ORB orb = ORB.init(args, null); 1 org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent("ShapeList", ""); NameComponent path [] = { nc }; ShapeList shapeListRef = ShapeListHelper.narrow(ncRef.resolve(path)); 2 Shape[] sList = shapeListRef.allShapes(); 3 GraphicalObject g = sList[0].getAllState(); 4 } catch(org.omg.CORBA.SystemException e) {...} } Note the use of Java interfaces and classes that were generated by idltojava. These are not dynamic calls. The compiler sees the interfaces and classes.
17
95-702 OCT 17 Master of Information System Management CORBA Architecture (1) client server proxy or dynamic invocation implementation repository object adapter ORB skeleton or dynamic skeleton client program interface repository Request Reply core for A Servant A CORBA allows for static and dynamic invocation. Applications may invoke operations on target objects with or without having compile-time knowledge of the remote object interface. (The client is a lot easier to read when it makes static calls.)
18
95-702 OCT 18 Master of Information System Management CORBA Architecture (2) client server proxy or dynamic invocation implementation repository object adapter ORB skeleton or dynamic skeleton client program interface repository Request Reply core for A Servant A The Implementation Repository contains information that allows the ORB to locate and activate implementations of objects. The implementation repository : 1. Maintain a registry of known servers. 2. Record which server is currently running, and which port and host it uses. 3. Starts servers on demand if they are registered with the Implementation Repository. From [http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/TAO/ docs/implrepo/paper.html]
19
95-702 OCT 19 Master of Information System Management CORBA Architecture (3) client server proxy or dynamic invocation implementation repository object adapter ORB skeleton or dynamic skeleton client program interface repository Request Reply core for A Servant A Dynamic CORBA applications require a means of obtaining type information at run time. This is the function of the Interface Repository.
20
95-702 OCT 20 Master of Information System Management Naming Graph in CORBA Naming Service initial naming context ShapeList C DE B initial naming context P R S T V Q U XX CORBA provides a registry service and a directory service. Quiz: How does a registry differ from a directory? Quiz: How is this different from the rmiregistry?
21
95-702 OCT 21 Master of Information System Management My Summary CORBABinary fast Interoper able Complex OOP Java RMIBinary fast Java onlyComplex OOP.NET Remoting Binary fast.Net Languag es Complex OOP Web Services Text w/binary encoded slow Interoper able Not OOP Simple & Simple wins
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.