• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Lecture4   corba
 

Lecture4 corba

on

  • 220 views

nice note use it

nice note use it

Statistics

Views

Total Views
220
Views on SlideShare
220
Embed Views
0

Actions

Likes
0
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • CORBA IDL – Interface Definition Language DII – Dynamic Invocation Interface The ORB has very few services itself, most communication is performed by the stub/skeletons between clients and objects (servers)
  • Interface repository allows a process to find out during runtime to investigate how an interface looks like. Implementation repository provides all is needed to implement and activate objects. Collection – allows creating groups of object into lists, stacks, queues, sets, etc ... Query – constructs collections of object that can be investigated by a query language (adds to the collection service) Concurrency control – locking Transactions – allow objects to support transactions
  • Events – allows clients and objects to be interrupted Notification provides an advance asynchronous communications. Externalization – marshaling objects to be stored on disk or network. Life cycle – create/destroy/copy and move objects licensing – right of clients Naming – computer ids to human readable names.
  • Property service allows clients to associate attributes and values with objects, they describe the object not its state. Trading service – allows object to advertise their interfaces and clients to perform lookups. Persistence – storing information on disk transparently. Relationship – support organizing objects into schemes (like in databases).
  • Synchronous – at most once one way – best effort (no wait at all) deferred synchronous – at most once – can later block or check for reply. Event channel between consumer and supplier No mechanism to filter events, no persistent events. Filtering was added in the notification service.
  • IOR – Interoperable Object Reference – allows passing an object reference between processes.

Lecture4   corba Lecture4 corba Presentation Transcript

  • Distributed Object Programming course 2003 CORBA Common Object Request Broker Architecture
  • Distributed Object Programming course 2003 What is CORBA? ● Specifications, not products ● Vision is portability (between vendors) – Rely on supporting OS/platform? – Standards do not cover all needs (extensions) – Standards and products evolve at different rates ● Not all vendors support every option ● http://www.omg.org
  • Distributed Object Programming course 2003 Versions ● CORBA – simple remote object model ● CORBA 2 – interoperability, common server programming model, transactions, … ● CORBA 2.2, 2.3, … ● CORBA 3 – load balancing, components, …
  • Distributed Object Programming course 2003 Model ● Focus is on objects – Create remote objects and call their methods ● Used like local objects ● Contain state like normal objects ● Creation mechanism is different ● Uses ‘stubs’ and ‘skeletons’ – Multi-language ● Bindings for C, C++, Java, Ada, … ● Available methods defined through IDL
  • Distributed Object Programming course 2003 Model (2) ● Remote stateful objects – Real objects, possibly shared and persistent ● Rich API set – Programmers directly control security, transactions, finding object/servers by calling methods ● Quite far from stateless components – External state, container properties
  • Distributed Object Programming course 2003 Model (3) One standardised interface One interface per object operation ORB-dependent interface One interface per object adapter DynamicDynamic InvocationInvocation Client Stubs ORB InterfaceInterface Implementation Skeletons Client Object Implementation ORB Core Object Adapter
  • Distributed Object Programming course 2003 Interface and Services ● Interface repository ● Implementation repository ● Services: – Collection – Query – Concurrency control – Transactions
  • Distributed Object Programming course 2003 More Services ● Services – Event – Notification – Externalization – Life cycle – Licensing – Naming ● Finding servers and load balancing
  • Distributed Object Programming course 2003 Services (3) ● Services: – Property – Trading – Persistence – Relationship – Security ● Common to use SSL for lightweight authentication and encryption ● CORBA standard security service – Time
  • Distributed Object Programming course 2003 Communications ● Object invocations – Synchronous – One way – Deferred synchronous ● Events – Consumer and Supplier – Push model vs Pull model
  • Distributed Object Programming course 2003 CORBA Processes ● Clients – Simple to program – IDL compiler creates a proxy implementation – Interceptors: intercept request between client and server. – Request level – between client and proxy – Message level – between ORB and network
  • Distributed Object Programming course 2003 Interceptors Client application Client proxy Client ORB Local OS Request Level Interceptors Message Level Interceptors Invocation request
  • Distributed Object Programming course 2003 Portable Object Adapter ● Provides a consistent image of the object ● (also called wrapper) ● Makes server side code appears as CORBA objects ● Use a “servant” - implement client methods ● Maps object Ids (references) to servants.
  • Distributed Object Programming course 2003 Naming ● How do you find object or servers? – Using a name server – Directory of available objects ● Server processes call name server when they come up – Advertising their services/objects ● How do you find the name server? – Call resolve_initial_references – And local ORB ‘knows’ location of NS
  • Distributed Object Programming course 2003 Naming (2) ● Clients call name server to find the location of a factory/object/server – Up to the name server to match clients to servers/objects – Returns object reference (IOR?) ● Includes location of server ● Client calls server process (via ORB) to access or create objects
  • Distributed Object Programming course 2003 Scaling ● NS can support load balancing – Multiple servers/processors register the same service/object (object groups) – Name server spreads out requests across available objects – Proprietary until CORBA 3 ● Extends IOR to IOGR.
  • Distributed Object Programming course 2003 Where is the IDL? Client object IDL stub (obj) ORB Network services Server object IDL skel (obj) ORB/POA Network services Request Request data IIOP protocol
  • Distributed Object Programming course 2003 IDL Language It’s a declarative language to define client object/server object interface. It’s somehow a simplified object definition; no implementation is defined. An example… module Bank { struct Customer { string name; string address; string id; } interface Account { void debit( in unsigned long ammount ); void withdraw( in unsigned long ammount ); long balance(); } interface AccountMgr { Account getAccountByCustomer( Customer c ); } }
  • Distributed Object Programming course 2003 Example module Bank { struct Customer { string name; string address; string id; } interface Account { void debit( in unsigned long ammount ); void withdraw( in unsigned long ammount ); long balance(); } interface AccountMgr { Account getAccountByCustomer( Customer c ); } } Core concept: 2 kinds of programming types: Objects (interfaces) and non-objects (types) Interfaces Types
  • Distributed Object Programming course 2003 Language (2) • Operations in interfaces define callable methods. Operations can have parameters, but not implementation • Each parameter definition must say if it is an in , out or inout parameter and has a type and name • There are also support for: exception handling, sequence templates, arrays; inheritance; abstract interfaces and so on
  • Distributed Object Programming course 2003 Language (3) • Basic types: long, short, unsigned long, unsigned short, float, double, boolean, octet (fits anything, as sequence), any (really anything) • Constructed types: There are constructed types: struct, union, enumeration type. • The any type. Struct <identifier> { <declaration>; … } union <identifier> switch (<switch-type>) { case <constant>: <declaration>; … } enum <identifier> { <identifier>, … }
  • Distributed Object Programming course 2003 IDL Mapping • They must define the means of expressing in the language all CORBA IDL constructs. • A complete language mapping will allow a programmer to have access to all ORB functionality in a way that is convenient for the particular programming language. • To support source portability, all ORB implementations must support the same mapping for a particular language (mapping specification).
  • Distributed Object Programming course 2003 IDL Mapping Objects specification in IDL Client code Server code compiler  Ada, C, C++, COBOL, Smalltalk, and Java, Lisp, CORBA scripting language  Java to IDL
  • Distributed Object Programming course 2003 IDL Mapping interface myObj { long op1 (in long arg1 ); } typedef CORBA_Object myObj; extern CORBA_long myObj_op1( example1 o, CORBA_long arg1, CORBA_Environment *ev ); class myObjOperations extends org.omg.CORBA.IDLEntity { void op1( … ); …}; class myObj extends MyObjOperations { … } … class myObj : virtual public CORBA::Object { … public: … virtual void op1( … ); } C Java C++
  • Distributed Object Programming course 2003 IDL Mapping public interface myInt { ... } abstract interface myInt { ... } package M;module M { ... } public interface myObjOperations { ... } public interface myObj extends myObjOperations ... { } interface myObj { ... } JavaCORBA
  • Distributed Object Programming course 2003 IDL Mapping Op1 correspond to method op1 in object interface. in parameters are passed by value. out and inout parameters are passed through holder classes. For inout parameters, client must initialise the holder class with a value before calling the method. As interfaces are mapped to java interfaces, method and object’s signatures are maintained. operations and parameter passing: op1(in Ob1 x, out Ob2 y, inout Ob3 z) JavaCORBA
  • Distributed Object Programming course 2003 IDL Mapping IDL TYPE JAVA TYPE EXCEPTIONS boolean boolean Char char CORBA::DATA_CONVERSION wchar char CORBA::DATA_CONVERSION octec byte String Java.lang.String CORBA::MARSHAL CORBA::DATA_CONVERSION wstring Java.lang.String CORBA::MARSHAL CORBA::DATA_CONVERSION short short Unsigned short short Long int Unsigned long int Long long long Unsigned long long long float float double double fixed Java.math.BidDecimal CORBA::DATA_CONVERSION
  • Distributed Object Programming course 2003 IDL Mapping see specificationunion, sequence, arrays, constants, etc. final public class myStruct ... IDLEntity { public int field1; public String field2; public myStruct() { } // empty! public myStruct(int f1, String f2) { ... } } struct myStruct { long field1; string field2; } JavaCORBA
  • Distributed Object Programming course 2003 IDL Example module Bank { struct StructType{ long initbalance; string acctname; }; interface Account { float balance(); string getCalendar(); }; interface AccountManager { Account open(in StructType st); }; };
  • Distributed Object Programming course 2003 IDL Example ● AccountManagerStub.java--Stub code for the AccountManager object on the client side. ● AccountStub.java--Stub code for the Account object on the client side. ● ccount.java--The Account interface declaration. ● AccountHelper.java--Declares the AccountHelper class, which defines helpful utility methods. ● AccountHolder.java--Declares the AccountHolder class, which provides a holder for passing Account objects. ● AccountManager.java--The AccountManager interface declaration. ● AccountManagerHelper.java--Declares the AccountManagerHelper class, which defines helpful utility methods. ● AccountManagerHolder.java--Declares the AccountManagerHolder class, which provides a holder for passing AccountManager objects.
  • Distributed Object Programming course 2003 IDL Example ● AccountManagerOperation.java--This interface provides declares the method signatures defined in the AccountManager interface in the Bank.idl file. ● AccountManagerPOA.java--POA servant code (implementation base code) for the AccountManager object implementation on the server side. ● AccountManagerPOATie.java--Class used to implement the AccountManager object on the server side using the tie mechanism, ● AccountOperations.java--This interface provides declares the method signatures defined in the Account interface in the Bank.idl file ● AccountPOA.java--POA servant code (implementation base code) for the Account object implementation on the server side. ● AccountPOATie.java--Class used to implement the Account object on the server side using the tie mechanism ● StructType.java--Declares the StrucType class, which is used both by Client and Server classes.
  • Distributed Object Programming course 2003 IDL Example ● StructTypeHelper.java--Declares the StructTypeHelper class, which defines helpful utitly methods. ● StructTypeHolder.java--Declares the StructTypeHolder class, which provides a holder for passing StructType objects.
  • Distributed Object Programming course 2003 Server Example ● Steps for server setup – Initialize ORB – Create and setup POA – Activate the POA Manager – Activate objects – Wait for client requests
  • Distributed Object Programming course 2003 org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); // get a reference to the root POA POA rootPOA = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); // Create policies for our persistent POA org.omg.CORBA.Policy[] policies = { rootPOA.create_lifespan_policy(LifespanPolicyValue.PERSISTENT) }; // Create myPOA with the right policies POA myPOA = rootPOA.create_POA( "bank_agent_poa", rootPOA.the_POAManager(), policies ); // Create the servant AccountManagerImpl managerServant = new AccountManagerImpl();
  • Distributed Object Programming course 2003 Code Example (cont) // Decide on the ID for the servant byte[] managerId = "BankManager".getBytes(); // Activate the servant with the ID on myPOA myPOA.activate_object_with_id(managerId, managerServant); // Activate the POA manager rootPOA.the_POAManager().activate(); System.out.println(myPOA.servant_to_reference(managerServant) + " is ready."); // Wait for incoming requests orb.run();
  • Distributed Object Programming course 2003 Client Example ● Steps for client setup – Initialize ORB – Locate Server using location service (smart agent) – Obtains the balance of the Account using the object reference returned by bind().
  • Distributed Object Programming course 2003 Client Example Org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args,null); // Get the manager Id byte[] managerId = "BankManager".getBytes(); // Locate an account manager. Give the full POA name and // the servant ID. Bank.AccountManager manager = Bank.AccountManagerHelper.bind(orb, "/bank_agent_poa", managerId); // use args[0] as the account name, or a default. // String name = args.length > 0 ? args[0] : // "default account"; String name=args[0]; Integer initbalance=new Integer(args[1]);
  • Distributed Object Programming course 2003 Client Example (cont) Bank.StructType stname= new Bank.StructType(initbalance.intValue(),name); // Request the account manager to open a named account. System.out.println(stname); Bank.Account account = manager.open(stname); // Get the balance of the account. float balance = account.balance(); String strtime= account.getCalendar(); // Print out the balance. System.out.println ("The balance in " + name + "'s account is $" + balance + "and time is "+ strtime);