270 likes | 617 Views
CORBA. Missam Momin Auburn University. What is Corba ?. Corba is an acronym for common object broker architecture. This architecture is meant to provide flexible and interoperable objects . structured to allow integration of a wide variety of object systems.
E N D
CORBA Missam Momin Auburn University
What is Corba ? • Corba is an acronym for common object broker architecture. • This architecture is meant to provide flexible and interoperable objects . • structured to allow integration of a wide variety of object systems. • Corba was designed to allow intelligent components to discover each other and interoperate on an object bus.
OMG OBJECT MANAGEMENT GROUP A CONSORTIUM OF 800 COMPANIES FOUNDED IN APRIL1989 PREVIOUSLY 11 COMPANIES WERE MEMBER OF THE CONSORTIUM 3COM CORPORATION, AMERICAN AIRLINES CANON INC, DATA GENERAL, H.P., PHILIPS TELECOMMUNICATIONS N.V. , SUN UNISYSTEMS
WHAT CORBA DOES ? • CORBA ALLOWS INTELLIGENT COMPONENTS TO DISCOVER EACH OTHER AND INTEROPERATE ON AN OBJECT BUS . • SPECIFIC BUS RELATED SERVICES FOR CREATING AND DELETING OBJECTS ACCESS BY NAME AND PERSISTENT STORAGE EXTERNALIZING STATES AND DEFINES RELATIONSHIPS BETWEEN DIFFERENT OBJECTS EITHER LOCALLY OR REMOTELY. • CORBA CREATES INTERFACE SPECIFICATIONS AND NOT CODE INTERFACES DEFINED ARE DERIEVED FROM DEMONSTRATED TECHNOLOGIES SUBMITTED BY MEMBER COMPANIES.
WHAT IS A DISTRIBUTED CORBA OBJECT ? • CORBA OBJECTS ARE BLOBS OF INTELLIGENCE THAT CN LIVE ANYWHERE ON A NETWORK • OBJECTS ARE PACKED AS BINARY COMPONENTS THAT REMOTE CLIENTS CAN ACCESS THRU METHOD INVOCATION LANGUAGE AND COMPILER USED TO CREATE SERVER OBJECTS ARE TRANSPARENT TO CLIENT. • ALSO THE ISSUE OF IMPLEMENTATION OF THE SERVER OBJECT IS TRANSERANT • CLIENT JUST HAS TO KNOW THE INTERFACE THE SERVER OBJECT PUBLISHES • INTERFACE SERVES AS A CONTRACT BETWEEN THE CLIENT AND THE SERVER • THIS CONTRACT IS TERMED AS IDL TO SPECIFY A COMPONENT’S BOUNDARIES AND ITS CONTRACTUAL INTERFACES WITH THE POTENTIAL CLIENTS.
c C++ ada Smalltalk Cobol Java Cobol Smalltalk C++ ada c java idl id id id id idl Client stubs Server skeletons CORBA IIOP ORB
OMG’S CORBA ARCHITECTURE • ORB: OBJECT REQUEST BROKER : This object bus provides mechanisms required to find the object implementation for the request made by the client prepare the implementation and communicate the data to client who has made the request the this is done with the help of interfaces. • Client idl stubs : provides static interface to object services these are precompiled stubs to define how clients invoke corresponding services on servers acts as a local call and is a local proxy object for the remote server object. • DII :discovers methods to be invoked at run times corba defines API for looking in to the metadata that defines the server’s interface parameter generation and issues remote calls and gets the results • Interface repository: run time distributed data base containing machine readable versions of the id defined interfaces • ORB Interface :API's to conver a object reference to a string and vice versa useful for storage and communication. • SERVER IDL STUBS OR SKELETON: Provice static interfaces to each service exported by the server • DSI :Provides run time mechanism for server that need to handle incoming method calls for components that don’t have id based compiled skeletons • Object Adapter accepts requests for service passes request for server objects assign object id’s • implementation repository run time repository of information about class a server supports
Application objects Common facilities (corba facilities) ORB Common object services
Corba facilities vertical facilities horizontal facilities examples: distributed doc information management systems management task management Corba services naming persistence lifecycle properties concurrency collection security trader licensing startup time relationships query transactions events externalization Facilities of corba architecture
Life cycle service create copy move and delete objects • persistence storage issue ODBMS and RDBMS SERVERS • naming service discover components on object bus by name • event service register and unregistered events events channel works as a broker to collect a and distribute events amongst components even if they don’t know each other • concurrency: provides lock manager • transaction 2 phase commit coordination amongst persistent objects • relationship: dynamic associations among components that are unknown to each other • query service :query for objects • licensing service meter for the use of components • properties association with the component state like title date ,etc • time service: important issue in distributed computing environment synchronization • security framework for authentication access control lists etc • trader service yellow pages for objects • collection service generically create and manipulate common collections • externalization : data in to and out of component using stream like mechanism
Java meets corba Corba/java ORB; CORBA IIOP WRITTEN ENTIRELY IN JAVA E.G. JAVA APPLET ON THE BROWSER INVOKES METHODS DIRECTLY ON CROBA OIBJECT USIGN IIOP PROTOCOL ADVANTAGES :IT BY PASSES HTTP AND CGI SO THE STATELESSNESS OF THE THE CGI PARADIGM IS NOT THERE AND OBJECT STATE AND NAME ARE MAINTAINED .
CORBA JAVA STANDARDS IDL TO JAVA MAPS CORBA IDL TO JAVA JAVA TO IDL: CORBA/RMI CONVERGENCE STANDARD SPECIFIES REMOTE INTERFACES USING RMI SEMANTICS OF CORBA IDL ENTERPRISE JAVA BEANS CORBA MAPPING SPECS BASED ON RMI/IDL SUBSET AND CORBA TRANSACTIONS ALSO MAPS JNDI TO CORBA NAMING SERVICE
STEPS TO CREATE SERVER CLASSES 2 LOAD 1 3 7 8 6 4 9 5
STEPS 1: CREATE IDL DEFINATIONS OBJECTS TELL THE POTENTIAL CLIENTS OPERATIONS AND METHODS AND INVOCATIONS MEANS SO TYPES ATTRIBUTES PARAMETERS ETC ARE DEF INEDEXAMPLE: MODULE Counter{ interface Count{ attribute long sum;long increment() ;};}; this file is named as count.idl contains idl for the interface Countneed idl2java compiler for understanding between java clients and serversstep 2 load it into the interface repository for run times access
Step3: pre compile the idl using the idl2java compileridl2java count.old -options note options are for inheritance based and delegation based pre compiler has created 5 different classes and one interface
1) Counter._CountImplBase : this implements server side skeleton for Count 2) Counter._St_Count :client side stub implementation3) Counter.CountHELPER cast Corba objects to Count type 4) Counter.CountHolder holder for public instance member of the typeCount5)Counter.Count : interface mapping depending on the language6)Counter._example_Count: example class for Count object implementation
Counter.Count package Counter; public interface Count extends org.omg.CORBA.Object { public int sum(); public void sum (int x); public int increment(); }
Counter._example_Count Package Counter; public class_example_Count extends Counter._CountImplBase { public _example_Count (java.lang.String name) { super (name); } public _example_Count() { super(); } public int increment() {} public void sum(int sum){ } public int sum() { } }
// count impl.java this is the Count implementationclass CountImpl extends Counter._CountImplBase{private int sum;//constructorCountImpl(String name){ super (name);System.out.println(“Count Object Created”);sum =0;}//accessor method for attributepublic int sum(){ return sum;}public void sum(int x){sum =x;}public int increment(){sum++return sum;}}
//Count server provides main function on the serverclass CountServer{static public void main(String [] args){try{org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init (args, null );org.omg.CORBA.BOA boa = orb.BOA_init ();CountImpl count = new CountImpl (“my count” );boa.obj_is_ready() (count); //export to the orb the new object countboa.Impl_is_ready();}catch (org.omg.CORBA.SystemException e){ System.err.println(e);} } }
ORB BOA COUNT SERVER ORB.init BOA_init New Count Impl Obj_is_ready Impl_is_ready
//Count clientclass CountClient{public static void main (String [] args){ try{ System.out.println (“initializing the ORB”);org.omg.CORBA.ORB orb = org.omg.CORBA.init (args, null );// bind to the count objectSystem.out.println (“ Binding to Count Object” );Counter.Count counter = Counter.CountHelper.bind (orb, “My Count”);System.out.println (“setting sum to 0”);count .sum((int) 0);long startTime = System.currentTimeMillis();
System.out.println (“incrementing”);for (int i=0; i< 1000; I++){counter.increment();}long stopTime = System.currentTimeMills();System.out.println (“ Avg Ping =“ + ((stopTime - startTime) / 1000f ) + “msecs”);System.out.println (“Sum = “ + counter.sum());}catch (org.omg.CORBA.SystemException e){System.err.println (“SystemException “);System.err.println (e);}}}