CORBA_2.0

download CORBA_2.0

of 634

Transcript of CORBA_2.0

  • 8/3/2019 CORBA_2.0

    1/633

    The Common Object Request Broker:

    Architecture and Specification

    Revision 2.0, July 1995Updated July 1996

  • 8/3/2019 CORBA_2.0

    2/633

    Copyright 1995, 1996 BNR Europe Ltd.Copyright 1991, 1992, 1995, 1996 by Digital Equipment CorporationCopyright 1995, 1996 Expersoft CorporationCopyright 1996 FUJITSU LIMITEDCopyright 1996 Genesis Development CorporationCopyright 1989, 1990, 1991, 1992, 1995, 1996 by Hewlett-Packard CompanyCopyright 1991, 1992, 1995, 1996 by HyperDesk CorporationCopyright 1995, 1996 IBM CorporationCopyright 1995, 1996 ICL, plcCopyright 1995, 1996 IONA Technologies, Ltd.Copyright 1991, 1992, 1995, 1996 by NCR CorporationCopyright 1995, 1996 Novell USGCopyright 1991,1992, 1995, 1996 by Object Design, Inc.Copyright 1991, 1992, 1995, 1996 Object Management Group, Inc.Copyright 1996 Siemens Nixdorf Informationssysteme AGCopyright 1991, 1992, 1995, 1996 by Sun Microsystems, Inc.Copyright 1995, 1996 SunSoft, Inc.Copyright 1996 Sybase, Inc.Copyright 1996 Visual Edge Software, Ltd.

    BNR Europe Ltd., Expersoft Corporation, FUJITSU LIMITED, Genesis Development Corporation, IBM Cor-poration, ICL plc, IONA Technologies Ltd., Digital Equipment Corporation, Hewlett-Packard Company,HyperDesk Corporation, NCR Corporation, Novell USG, Object Design, Inc., Siemens Nixdorf Informations-systeme AG, Sun Microsystems, Inc., SunSoft, Inc., Sybase, Inc., and Visual Edge Software, Ltd., herebygrant to the Object Management Group, Inc. a nonexclusive, royalty-free, paid up, worldwide license to copyand distribute this document and to modify this document and distribute copies of the modified version.

    Each of the copyright holders listed above has agreed that no person shall be deemed to have infringed the copyrightin the included material of any such copyright holder by reason of having used the specification set forth herein orhaving conformed any computer software to the specification.

    NOTICE

    The information contained in this document is subject to change without notice.

    The material in this document details an Object Management Group specification in accordance with the license andnotices set forth on this page. This document does not represent a commitment to implement any portion of this spec-ification in any companies' products.

    WHILE THE INFORMATION IN THIS PUBLICATION IS BELIEVED TO BE ACCURATE,THE OBJECT MANAGEMENT GROUP, DIGITAL EQUIPMENT CORPORATION, FUJITSU LTD, GENESISDEVELOPMENT CORPORATION, HEWLETT-PACKARD COMPANY, HYPERDESK CORPORATION, NCRCORPORATION, OBJECT DESIGN, INC., SIEMENS NIXDORF INFORMATIONSSYTEME AG, SYBASEINC., SUN MICROSYSTEMS, INC., VISUAL EDGE SOFTWARE LTD, AND X/OPEN CO. LTD. MAKE NOWARRANTY OF ANY KIND WITH REGARDS TO THIS MATERIAL INCLUDING, BUT NOT LIMITED TO,THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Theaforementioned copyright holders shall not be liable for errors contained herein or for incidental or consequentialdamages in connection with the furnishing, performance, or use of this material.

    The copyright holders listed above acknowledge that the Object Management Group (acting itself or through its des-ignees) is and shall at all times be the sole entity that may authorize developers, suppliers and sellers of computersoftware to use certification marks, trademarks or other special designations to indicate compliance with these mate-rials.

  • 8/3/2019 CORBA_2.0

    3/633

    This document contains information which is protected by copyright. All Rights Reserved. No part of this work coveredby copyright herein may be reproduced or used in any form or by any meansgraphic, electronic or mechanical, includ-ing photocopying, recording, taping, or information storage and retrieval systemswithout permission of the copyrightowner.

    RESTRICTED RIGHTS LEGEND. Use, duplication, or disclosure by government is subject to restrictions as set forth insubdivision (c) (1) (ii) of the Right in Technical Data and Computer Software Clause at DFARS 252.227.7013.

    OMG and Object Management are registered trademarks of the Object Management Group, Inc.Object Request Broker, OMG IDL, ORB CORBA, CORBAfacilities, and CORBAservices are trademarks of the ObjectManagement Group.

    Hewlett-Packard Company is a trademark of Hewlett-Packard Company.HyperDesk is a trademark of HyperDesk Corporation.Microsoft and Visual Basic are registered trademarks of Microsoft Corporation.Smalltalk/V is a registered trademark of Digitalk, Inc.SunSoft is a trademark of Sun Microsystems, Inc., licensed to SunSoft, Inc.

    X/Open and the "X" symbol are trademarks of X/Open Company Limited.VisualAge is a trademark of International Business Machines Corporation.VisualWorks is registered trademark of ParcPlace Systems, Inc.

    Other names, products, and services may be the trademarks or registered trademarks of their respective holders.

  • 8/3/2019 CORBA_2.0

    4/633

  • 8/3/2019 CORBA_2.0

    5/633

    CORBA V2.0 July 1996

    v

    Table of Contents

    0.1 About This Document . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1.1 Object Management Group. . . . . . . . . . . . . . 10.1.2 X/Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    0.2 Intended Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    0.3 Context of CORBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    0.4 Associated Documents . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    0.5 Structure of This Manual . . . . . . . . . . . . . . . . . . . . . . . . 4

    0.6 Definition of CORBA Compliance. . . . . . . . . . . . . . . . . 6

    0.7 Typographical Conventions . . . . . . . . . . . . . . . . . . . . . . 70.8 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    1. The Object Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1

    1.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1

    1.2 Object Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21.2.1 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21.2.2 Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21.2.3 Object Creation and Destruction. . . . . . . . . . 1-31.2.4 Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4

    1.2.5 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-51.2.6 Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . 1-51.2.7 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7

    1.3 Object Implementation. . . . . . . . . . . . . . . . . . . . . . . . . . 1-71.3.1 The Execution Model: Performing Services . 1-71.3.2 The Construction Model . . . . . . . . . . . . . . . . 1-8

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    6/633

    vi

    CORBA V2.0 July 1996

    2. CORBA Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1

    2.1 Structure of an Object Request Broker. . . . . . . . . . . . . . 2-12.1.1 Object Request Broker . . . . . . . . . . . . . . . . . 2-52.1.2 Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-62.1.3 Object References. . . . . . . . . . . . . . . . . . . . . 2-62.1.4 OMG Interface Definition Language . . . . . . 2-72.1.5 Mapping of OMG IDL to Programming Languages

    2-72.1.6 Client Stubs . . . . . . . . . . . . . . . . . . . . . . . . . 2-82.1.7 Dynamic Invocation Interface. . . . . . . . . . . . 2-82.1.8 Implementation Skeleton . . . . . . . . . . . . . . . 2-82.1.9 Dynamic Skeleton Interface . . . . . . . . . . . . . 2-82.1.10 Object Adapters . . . . . . . . . . . . . . . . . . . . . . 2-9

    2.1.11 ORB Interface. . . . . . . . . . . . . . . . . . . . . . . . 2-92.1.12 Interface Repository . . . . . . . . . . . . . . . . . . . 2-92.1.13 Implementation Repository. . . . . . . . . . . . . . 2-10

    2.2 Example ORBs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-102.2.1 Client- and Implementation-resident ORB . . 2-102.2.2 Server-based ORB . . . . . . . . . . . . . . . . . . . . 2-102.2.3 System-based ORB. . . . . . . . . . . . . . . . . . . . 2-102.2.4 Library-based ORB. . . . . . . . . . . . . . . . . . . . 2-10

    2.3 Structure of a Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11

    2.4 Structure of an Object Implementation. . . . . . . . . . . . . . 2-12

    2.5 Structure of an Object Adapter . . . . . . . . . . . . . . . . . . . . 2-14

    2.6 Example Object Adapters. . . . . . . . . . . . . . . . . . . . . . . . 2-162.6.1 Basic Object Adapter . . . . . . . . . . . . . . . . . . 2-162.6.2 Library Object Adapter . . . . . . . . . . . . . . . . . 2-162.6.3 Object-Oriented Database Adapter . . . . . . . . 2-16

    2.7 The Integration of Foreign Object Systems . . . . . . . . . . 2-16

    3. OMG IDL Syntax and Semantics. . . . . . . . . . . . . . . . . . . . 3-1

    3.1 About This Chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1

    3.2 Lexical Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2

    3.2.1 Tokens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-53.2.2 Comments. . . . . . . . . . . . . . . . . . . . . . . . . . . 3-53.2.3 Identifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-53.2.4 Keywords . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-63.2.5 Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6

    3.3 Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8

    3.4 OMG IDL Grammar. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    7/633

    CORBA V2.0 July 1996

    vii

    3.5 OMG IDL Specification . . . . . . . . . . . . . . . . . . . . . . . . . 3-133.5.1 Module Declaration . . . . . . . . . . . . . . . . . . . 3-133.5.2 Interface Declaration . . . . . . . . . . . . . . . . . . 3-13

    3.6 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15

    3.7 Constant Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-173.7.1 Syntax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-173.7.2 Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-18

    3.8 Type Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-193.8.1 Basic Types. . . . . . . . . . . . . . . . . . . . . . . . . . 3-203.8.2 Constructed Types. . . . . . . . . . . . . . . . . . . . . 3-223.8.3 Template Types. . . . . . . . . . . . . . . . . . . . . . . 3-253.8.4 Complex Declarator . . . . . . . . . . . . . . . . . . . 3-26

    3.9 Exception Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26

    3.10 Operation Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . 3-273.10.1 Operation Attribute . . . . . . . . . . . . . . . . . . . . 3-283.10.2 Parameter Declarations. . . . . . . . . . . . . . . . . 3-283.10.3 Raises Expressions . . . . . . . . . . . . . . . . . . . . 3-293.10.4 Context Expressions . . . . . . . . . . . . . . . . . . . 3-29

    3.11 Attribute Declaration . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-30

    3.12 CORBA Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-31

    3.13 Names and Scoping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-31

    3.14 Differences from C++ . . . . . . . . . . . . . . . . . . . . . . . . . . 3-33

    3.15 Standard Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-333.15.1 Standard Exceptions Definitions . . . . . . . . . 3-343.15.2 Object Non-Existence. . . . . . . . . . . . . . . . . . 3-35

    4. Dynamic Invocation Interface . . . . . . . . . . . . . . . . . . . . . . 4-1

    4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-14.1.1 Common Data Structures . . . . . . . . . . . . . . . 4-14.1.2 Memory Usage . . . . . . . . . . . . . . . . . . . . . . . 4-34.1.3 Return Status and Exceptions . . . . . . . . . . . . 4-3

    4.2 Request Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4

    4.2.1 create_request. . . . . . . . . . . . . . . . . . . . . . . . 4-44.2.2 add_arg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-64.2.3 invoke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-74.2.4 delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-7

    4.3 Deferred Synchronous Operations . . . . . . . . . . . . . . . . . 4-74.3.1 send. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-74.3.2 send_multiple_requests. . . . . . . . . . . . . . . . . 4-8

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    8/633

    viii

    CORBA V2.0 July 1996

    4.3.3 get_response . . . . . . . . . . . . . . . . . . . . . . . . . 4-94.3.4 get_next_response. . . . . . . . . . . . . . . . . . . . . 4-9

    4.4 List Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10

    4.4.1 create_list . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-104.4.2 add_item. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-114.4.3 free . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-114.4.4 free_memory. . . . . . . . . . . . . . . . . . . . . . . . . 4-114.4.5 get_count . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-124.4.6 create_operation_list. . . . . . . . . . . . . . . . . . . 4-12

    4.5 Context Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-12

    4.6 Context Object Operations . . . . . . . . . . . . . . . . . . . . . . . 4-134.6.1 get_default_context. . . . . . . . . . . . . . . . . . . . 4-144.6.2 set_one_value . . . . . . . . . . . . . . . . . . . . . . . . 4-154.6.3 set_values . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-154.6.4 get_values. . . . . . . . . . . . . . . . . . . . . . . . . . . 4-154.6.5 delete_values . . . . . . . . . . . . . . . . . . . . . . . . 4-164.6.6 create_child . . . . . . . . . . . . . . . . . . . . . . . . . 4-164.6.7 delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-16

    4.7 Native Data Manipulation . . . . . . . . . . . . . . . . . . . . . . . 4-17

    5. Dynamic Skeleton Interface . . . . . . . . . . . . . . . . . . . . . . . . 5-1

    5.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2

    5.2 Explicit Request State: ServerRequest Pseudo-Object . . 5-2

    5.3 Dynamic Skeleton Interface: Language Mapping. . . . . . 5-35.3.1 ServerRequests Handling of Operation

    Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . 5-35.3.2 Registering Dynamic Implementation

    Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4

    6. The Interface Repository . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1

    6.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1

    6.2 Scope of an Interface Repository . . . . . . . . . . . . . . . . . . 6-2

    6.3 Implementation Dependencies . . . . . . . . . . . . . . . . . . . . 6-3

    6.3.1 Managing Interface Repositories . . . . . . . . . 6-46.4 Basics of the Interface Repository Interface. . . . . . . . . . 6-56.4.1 Names and Identifiers . . . . . . . . . . . . . . . . . . 6-56.4.2 Types and TypeCodes . . . . . . . . . . . . . . . . . . 6-56.4.3 Interface Objects. . . . . . . . . . . . . . . . . . . . . . 6-56.4.4 Structure and Navigation of Interface

    Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-6

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    9/633

    CORBA V2.0 July 1996

    ix

    6.5 Interface Repository Interfaces. . . . . . . . . . . . . . . . . . . . 6-76.5.1 Supporting Type Definitions . . . . . . . . . . . . . 6-86.5.2 IRObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9

    6.5.3 Contained . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-96.5.4 Container . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-116.5.5 IDLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-156.5.6 Repository . . . . . . . . . . . . . . . . . . . . . . . . . . 6-166.5.7 ModuleDef . . . . . . . . . . . . . . . . . . . . . . . . . . 6-176.5.8 ConstantDef Interface. . . . . . . . . . . . . . . . . . 6-176.5.9 TypedefDef Interface . . . . . . . . . . . . . . . . . . 6-186.5.10 StructDef . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-196.5.11 UnionDef . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-196.5.12 EnumDef. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-20

    6.5.13 AliasDef . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-216.5.14 Read Interface. . . . . . . . . . . . . . . . . . . . . . . . 6-216.5.15 PrimitiveDef . . . . . . . . . . . . . . . . . . . . . . . . . 6-216.5.16 StringDef . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-226.5.17 SequenceDef. . . . . . . . . . . . . . . . . . . . . . . . . 6-226.5.18 ArrayDef. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-236.5.19 ExceptionDef . . . . . . . . . . . . . . . . . . . . . . . . 6-236.5.20 AttributeDef . . . . . . . . . . . . . . . . . . . . . . . . . 6-246.5.21 OperationDef . . . . . . . . . . . . . . . . . . . . . . . . 6-256.5.22 InterfaceDef . . . . . . . . . . . . . . . . . . . . . . . . . 6-27

    6.6 RepositoryIds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-306.6.1 OMG IDL Format. . . . . . . . . . . . . . . . . . . . . 6-306.6.2 DCE UUID Format. . . . . . . . . . . . . . . . . . . . 6-306.6.3 LOCAL Format . . . . . . . . . . . . . . . . . . . . . . 6-306.6.4 Pragma Directives for RepositoryId . . . . . . . 6-31

    6.7 TypeCodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-336.7.1 The TypeCode Interface . . . . . . . . . . . . . . . . 6-346.7.2 TypeCode Constants . . . . . . . . . . . . . . . . . . . 6-386.7.3 Creating TypeCodes . . . . . . . . . . . . . . . . . . . 6-39

    6.8 OMG IDL for Interface Repository . . . . . . . . . . . . . . . . 6-41

    7. ORB Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1

    7.1 Converting Object References to Strings . . . . . . . . . . . . 7-1

    7.2 Object Reference Operations . . . . . . . . . . . . . . . . . . . . . 7-27.2.1 Determining the Object Implementation

    and Interface . . . . . . . . . . . . . . . . . . . . . . . . . 7-37.2.2 Duplicating and Releasing Copies of

    Object References. . . . . . . . . . . . . . . . . . . . . 7-3

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    10/633

    x

    CORBA V2.0 July 1996

    7.2.3 Nil Object References. . . . . . . . . . . . . . . . . . 7-47.2.4 Equivalence Checking Operation . . . . . . . . . 7-47.2.5 Probing for Object Non-Existence . . . . . . . . 7-4

    7.2.6 Object Reference Identity. . . . . . . . . . . . . . . 7-57.3 Overview: ORB and OA Initialization and Initial

    References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6

    7.4 ORB Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6

    7.5 OA and BOA Initialization. . . . . . . . . . . . . . . . . . . . . . . 7-8

    7.6 Obtaining Initial Object References . . . . . . . . . . . . . . . . 7-10

    8. The Basic Object Adapter. . . . . . . . . . . . . . . . . . . . . . . . . . 8-1

    8.1 Role of the Basic Object Adapter . . . . . . . . . . . . . . . . . . 8-1

    8.2 Basic Object Adapter Interface. . . . . . . . . . . . . . . . . . . . 8-3

    8.2.1 Registration of Implementations. . . . . . . . . . 8-58.2.2 Activation and Deactivation of

    Implementations . . . . . . . . . . . . . . . . . . . . . . 8-58.2.3 Generation and Interpretation of Object

    References . . . . . . . . . . . . . . . . . . . . . . . . . . 8-88.2.4 Authentication and Access Control. . . . . . . . 8-98.2.5 Persistent Storage . . . . . . . . . . . . . . . . . . . . . 8-10

    Appendix A Standard OMG IDL Types . . . . . . . . . . . . . . . . A-1

    9. Interoperability Overview. . . . . . . . . . . . . . . . . . . . . . . . . . 9-1

    9.1 Elements of Interoperability . . . . . . . . . . . . . . . . . . . . . . 9-19.1.1 ORB Interoperability Architecture . . . . . . . . 9-19.1.2 Inter-ORB Bridge Support . . . . . . . . . . . . . . 9-29.1.3 General Inter-ORB Protocol (GIOP) . . . . . . 9-29.1.4 Internet Inter-ORB Protocol (IIOP) . . . . . . . 9-39.1.5 Environment-Specific Inter-ORB

    Protocols (ESIOPs). . . . . . . . . . . . . . . . . . . . 9-4

    9.2 Relationship to Previous Versions of CORBA . . . . . . . . 9-4

    9.3 Examples of Interoperability Solutions . . . . . . . . . . . . . 9-49.3.1 Example 1. . . . . . . . . . . . . . . . . . . . . . . . . . . 9-59.3.2 Example 2. . . . . . . . . . . . . . . . . . . . . . . . . . . 9-59.3.3 Example 3. . . . . . . . . . . . . . . . . . . . . . . . . . . 9-59.3.4 Interoperability Compliance . . . . . . . . . . . . . 9-5

    9.4 Motivating Factors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-89.4.1 ORB Implementation Diversity . . . . . . . . . . 9-89.4.2 ORB Boundaries. . . . . . . . . . . . . . . . . . . . . . 9-89.4.3 ORBs Vary in Scope, Distance, and

    Lifetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-9

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    11/633

    CORBA V2.0 July 1996

    xi

    9.5 Interoperability Design Goals. . . . . . . . . . . . . . . . . . . . . 9-99.5.1 Non-Goals. . . . . . . . . . . . . . . . . . . . . . . . . . . 9-10

    10. ORB Interoperability Architecture . . . . . . . . . . . . . . . . . . 10-1

    10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-110.1.1 Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-110.1.2 Bridging Domains. . . . . . . . . . . . . . . . . . . . . 10-2

    10.2 ORBs and ORB Services . . . . . . . . . . . . . . . . . . . . . . . . 10-210.2.1 The Nature of ORB Services . . . . . . . . . . . . 10-310.2.2 ORB Services and Object Requests . . . . . . . 10-310.2.3 Selection of ORB Services . . . . . . . . . . . . . . 10-4

    10.3 Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-410.3.1 Definition of a Domain . . . . . . . . . . . . . . . . . 10-5

    10.3.2 Mapping Between Domains: Bridging . . . . . 10-610.4 Interoperability Between ORBs . . . . . . . . . . . . . . . . . . . 10-6

    10.4.1 ORB Services and Domains . . . . . . . . . . . . . 10-710.4.2 ORBs and Domains . . . . . . . . . . . . . . . . . . . 10-710.4.3 Interoperability Approaches . . . . . . . . . . . . . 10-810.4.4 Policy-Mediated Bridging. . . . . . . . . . . . . . . 10-1010.4.5 Configurations of Bridges in Networks. . . . . 10-10

    10.5 Object Addressing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1110.5.1 Domain-relative Object Referencing . . . . . . 10-1210.5.2 Handling of Referencing Between Domains. 10-12

    10.6 An Information Model for Object References . . . . . . . . 10-1410.6.1 What Information Do Bridges Need? . . . . . . 10-1410.6.2 Interoperable Object References: IORs . . . . 10-1410.6.3 Profile and Component Composition

    in IORs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10-1610.6.4 IOR Creation and Scope . . . . . . . . . . . . . . . . 10-1710.6.5 Stringified Object References . . . . . . . . . . . . 10-1710.6.6 Object Service Context . . . . . . . . . . . . . . . . . 10-18

    11. Building Inter-ORB Bridges . . . . . . . . . . . . . . . . . . . . . . . . 11-1

    11.1 In-Line and Request-Level Bridging . . . . . . . . . . . . . . . 11-111.1.1 In-line Bridging . . . . . . . . . . . . . . . . . . . . . . 11-211.1.2 Request-level Bridging . . . . . . . . . . . . . . . . . 11-311.1.3 Collocated ORBs . . . . . . . . . . . . . . . . . . . . . 11-4

    11.2 Proxy Creation and Management . . . . . . . . . . . . . . . . . . 11-4

    11.3 Interface-specific Bridges and Generic Bridges . . . . . . . 11-5

    11.4 Building Generic Request-Level Bridges . . . . . . . . . . . . 11-5

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    12/633

    xii

    CORBA V2.0 July 1996

    11.5 Bridging Non-Referencing Domains . . . . . . . . . . . . . . . 11-6

    11.6 Bootstrapping Bridges . . . . . . . . . . . . . . . . . . . . . . . . . . 11-7

    12. General Inter-ORB Protocol. . . . . . . . . . . . . . . . . . . . . . . . 12-1

    12.1 Goals of the General Inter-ORB Protocol. . . . . . . . . . . . 12-1

    12.2 General Inter-ORB Protocol Overview. . . . . . . . . . . . . . 12-212.2.1 Common Data Representation (CDR) . . . . . 12-212.2.2 GIOP Message Overview . . . . . . . . . . . . . . . 12-312.2.3 GIOP Message Transfer . . . . . . . . . . . . . . . . 12-3

    12.3 CDR Transfer Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-412.3.1 Primitive Types. . . . . . . . . . . . . . . . . . . . . . . 12-412.3.2 OMG IDL Constructed Types. . . . . . . . . . . . 12-812.3.3 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . 12-9

    12.3.4 Pseudo-Object Types . . . . . . . . . . . . . . . . . . 12-912.3.5 Object References. . . . . . . . . . . . . . . . . . . . . 12-15

    12.4 GIOP Message Formats . . . . . . . . . . . . . . . . . . . . . . . . . 12-1512.4.1 GIOP Message Header . . . . . . . . . . . . . . . . . 12-1512.4.2 Reply Message . . . . . . . . . . . . . . . . . . . . . . . 12-1812.4.3 CancelRequest Message . . . . . . . . . . . . . . . . 12-2012.4.4 LocateRequest Message . . . . . . . . . . . . . . . . 12-2112.4.5 LocateReply Message . . . . . . . . . . . . . . . . . . 12-2112.4.6 CloseConnection Message . . . . . . . . . . . . . . 12-2312.4.7 MessageError Message . . . . . . . . . . . . . . . . . 12-23

    12.5 GIOP Message Transport . . . . . . . . . . . . . . . . . . . . . . . . 12-2312.5.1 Connection Management . . . . . . . . . . . . . . . 12-2412.5.2 Message Ordering. . . . . . . . . . . . . . . . . . . . . 12-25

    12.6 Object Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12-25

    12.7 Internet Inter-ORB Protocol (IIOP) . . . . . . . . . . . . . . . . 12-2712.7.1 TCP/IP Connection Usage . . . . . . . . . . . . . . 12-2712.7.2 IIOP IOR Profiles . . . . . . . . . . . . . . . . . . . . . 12-27

    12.8 OMG IDL for the GIOP and IIOP Specifications. . . . . . 12-2912.8.1 GIOP Module . . . . . . . . . . . . . . . . . . . . . . . . 12-2912.8.2 IIOP Module. . . . . . . . . . . . . . . . . . . . . . . . . 12-31

    13. The DCE ESIOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-1

    13.1 Goals of the DCE Common Inter-ORB Protocol . . . . . . 13-1

    13.2 DCE Common Inter-ORB Protocol Overview . . . . . . . . 13-113.2.1 DCE-CIOP RPC . . . . . . . . . . . . . . . . . . . . . . 13-213.2.2 DCE-CIOP Data Representation. . . . . . . . . . 13-313.2.3 DCE-CIOP Messages . . . . . . . . . . . . . . . . . . 13-4

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    13/633

    CORBA V2.0 July 1996

    xiii

    13.2.4 Interoperable Object Reference (IOR) . . . . . 13-4

    13.3 DCE-CIOP Message Transport . . . . . . . . . . . . . . . . . . . 13-513.3.1 Pipe-based Interface . . . . . . . . . . . . . . . . . . . 13-5

    13.3.2 Array-based Interface . . . . . . . . . . . . . . . . . . 13-7

    13.4 DCE-CIOP Message Formats. . . . . . . . . . . . . . . . . . . . . 13-1013.4.1 DCE_CIOP Invoke Request Message . . . . . . 13-1013.4.2 DCE-CIOP Invoke Response Message . . . . . 13-1113.4.3 DCE-CIOP Locate Request Message . . . . . . 13-1313.4.4 DCE-CIOP Locate Response Message . . . . . 13-14

    13.5 DCE-CIOP Object References . . . . . . . . . . . . . . . . . . . . 13-1613.5.1 DCE-CIOP String Binding Component . . . . 13-1613.5.2 DCE-CIOP Binding Name Component . . . . 13-1713.5.3 DCE-CIOP No Pipes Component. . . . . . . . . 13-1813.5.4 Object Key Component. . . . . . . . . . . . . . . . . 13-1913.5.5 Endpoint ID Component. . . . . . . . . . . . . . . . 13-1913.5.6 Location Policy Component . . . . . . . . . . . . . 13-20

    13.6 DCE-CIOP Object Location. . . . . . . . . . . . . . . . . . . . . . 13-2113.6.1 Location Mechanism Overview . . . . . . . . . . 13-2113.6.2 Activation . . . . . . . . . . . . . . . . . . . . . . . . . . . 13-2213.6.3 Basic Location Algorithm. . . . . . . . . . . . . . . 13-2213.6.4 Use of the Location Policy and the

    Endpoint ID . . . . . . . . . . . . . . . . . . . . . . . . . 13-23

    13.7 OMG IDL for the DCE CIOP Module . . . . . . . . . . . . . . 13-24

    13.8 References for this Chapter . . . . . . . . . . . . . . . . . . . . . . 13-26

    Appendix B OMG IDL Tags. . . . . . . . . . . . . . . . . . . . . . . . . B-1

    13A. Interworking Architecture . . . . . . . . . . . . . . . . . . . . . . . . . 13A-1

    13.1 Purpose of the Interworking Architecture. . . . . . . . . . . . 13A-113.1.1 Comparing COM Objects to CORBA

    Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13A-2

    13.2 Interworking Object Model . . . . . . . . . . . . . . . . . . . . . . 13A-313.2.1 Relationship to CORBA Object Model. . . . . 13A-313.2.2 Relationship to the OLE/COM Model . . . . . 13A-3

    13.2.3 Basic Description of the InterworkingModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13A-4

    13.3 Interworking Mapping Issues. . . . . . . . . . . . . . . . . . . . . 13A-8

    13.4 Interface Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13A-813.4.1 CORBA/COM . . . . . . . . . . . . . . . . . . . . . . . 13A-913.4.2 CORBA/Automation. . . . . . . . . . . . . . . . . . . 13A-913.4.3 COM/CORBA . . . . . . . . . . . . . . . . . . . . . . . 13A-10

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    14/633

    xiv

    CORBA V2.0 July 1996

    13.4.4 Automation/CORBA. . . . . . . . . . . . . . . . . . . 13A-10

    13.5 Interface Composition Mappings . . . . . . . . . . . . . . . . . . 13A-1113.5.1 CORBA/COM . . . . . . . . . . . . . . . . . . . . . . . 13A-11

    13.5.2 Detailed Mapping Rules . . . . . . . . . . . . . . . . 13A-1313.5.3 Example of Applying Ordering Rules. . . . . . 13A-1413.5.4 Mapping Interface Identity . . . . . . . . . . . . . . 13A-16

    13.6 Object Identity, Binding, and Life Cycle . . . . . . . . . . . . 13A-1813.6.1 Object Identity Issues . . . . . . . . . . . . . . . . . . 13A-1813.6.2 Binding and Life Cycle. . . . . . . . . . . . . . . . . 13A-20

    13.7 Interworking Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . 13A-2313.7.1 SimpleFactory Interface . . . . . . . . . . . . . . . . 13A-2313.7.2 IMonikerProvider Interface and

    Moniker Use . . . . . . . . . . . . . . . . . . . . . . . . . 13A-23

    13.7.3 ICORBAFactory Interface . . . . . . . . . . . . . . 13A-2413.7.4 IForeignObject Interface. . . . . . . . . . . . . . . . 13A-2613.7.5 ICORBAObject Interface . . . . . . . . . . . . . . . 13A-2713.7.6 IORBObject Interface. . . . . . . . . . . . . . . . . . 13A-2813.7.7 Naming Conventions for View

    Components . . . . . . . . . . . . . . . . . . . . . . . . . 13A-29

    13.8 Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13A-3213.8.1 Bridge Locality . . . . . . . . . . . . . . . . . . . . . . . 13A-3213.8.2 Distribution Architecture . . . . . . . . . . . . . . . 13A-33

    13.9 Interworking Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . 13A-33

    13.10 Compliance to COM/CORBA Interworking. . . . . . . . . . 13A-3313.10.1 Products Subject to Compliance . . . . . . . . . . 13A-3413.10.2 Compliance Points . . . . . . . . . . . . . . . . . . . . 13A-35

    13B. Mapping: COM and CORBA . . . . . . . . . . . . . . . . . . . . . . . 13B-1

    13.1 Data Type Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13B-1

    13.2 CORBA to COM Data Type Mapping . . . . . . . . . . . . . . 13B-213.2.1 Mapping for Basic Data Types . . . . . . . . . . . 13B-213.2.2 Mapping for Constants . . . . . . . . . . . . . . . . . 13B-213.2.3 Mapping for Enumerators. . . . . . . . . . . . . . . 13B-3

    13.2.4 Mapping for String Types . . . . . . . . . . . . . . . 13B-313.2.5 Mapping for Struct Types . . . . . . . . . . . . . . . 13B-513.2.6 Mapping for Union Types. . . . . . . . . . . . . . . 13B-613.2.7 Mapping for Sequence Types . . . . . . . . . . . . 13B-813.2.8 Mapping for Array Types . . . . . . . . . . . . . . . 13B-913.2.9 Mapping for the any Type. . . . . . . . . . . . . . . 13B-913.2.10 Interface Mapping. . . . . . . . . . . . . . . . . . . . . 13B-11

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    15/633

    CORBA V2.0 July 1996

    xv

    13.2.11 Inheritance Mapping. . . . . . . . . . . . . . . . . . . 13B-2613.2.12 Mapping for Pseudo-Objects . . . . . . . . . . . . 13B-3013.2.13 Interface Repository Mapping . . . . . . . . . . . 13B-33

    13.3 COM to CORBA Data Type Mapping . . . . . . . . . . . . . . 13B-3413.3.1 Mapping for Basic Data Types . . . . . . . . . . . 13B-3413.3.2 Mapping for Constants . . . . . . . . . . . . . . . . . 13B-3513.3.3 Mapping for Enumerators. . . . . . . . . . . . . . . 13B-3613.3.4 Mapping for String Types . . . . . . . . . . . . . . . 13B-3613.3.5 Mapping for Structure Types . . . . . . . . . . . . 13B-3813.3.6 Mapping for Union Types. . . . . . . . . . . . . . . 13B-3913.3.7 Mapping for Array Types . . . . . . . . . . . . . . . 13B-4113.3.8 Mapping for VARIANT . . . . . . . . . . . . . . . . 13B-4213.3.9 Mapping for Pointers . . . . . . . . . . . . . . . . . . 13B-45

    13.3.10 Interface Mapping. . . . . . . . . . . . . . . . . . . . . 13B-4513.3.11 Mapping for Read-Only Attributes . . . . . . . . 13B-5113.3.12 Mapping for Read-Write Attributes . . . . . . . 13B-51

    13C. Mapping: OLE Automation and CORBA . . . . . . . . . . . . . 13C-1

    13.1 Mapping CORBA Objects to OLE Automation . . . . . . . 13C-113.1.1 Architectural Overview. . . . . . . . . . . . . . . . . 13C-113.1.2 Main Features of the Mapping . . . . . . . . . . . 13C-313.1.3 Mapping for Interfaces . . . . . . . . . . . . . . . . . 13C-413.1.4 Mapping for Basic Data Types . . . . . . . . . . . 13C-1013.1.5 Special Cases of Basic Data Type Mapping . 13C-1113.1.6 Mapping for Strings . . . . . . . . . . . . . . . . . . . 13C-1213.1.7 A Complete IDL to ODL Mapping for the

    Basic Data Types . . . . . . . . . . . . . . . . . . . . . 13C-1213.1.8 Mapping for Object References . . . . . . . . . . 13C-1713.1.9 Mapping for Enumerated Types . . . . . . . . . . 13C-1913.1.10 Mapping for Arrays and Sequences . . . . . . . 13C-2013.1.11 Mapping for CORBA Complex Types . . . . . 13C-2113.1.12 Mapping for TypeCodes . . . . . . . . . . . . . . . . 13C-2413.1.13 Mapping for anys . . . . . . . . . . . . . . . . . . . . . 13C-2613.1.14 Mapping for Typedefs. . . . . . . . . . . . . . . . . . 13C-27

    13.1.15 Mapping for Constants . . . . . . . . . . . . . . . . . 13C-2713.1.16 Getting Initial CORBA Object References . . 13C-2813.1.17 Creating Initial in Parameters for

    Complex Types . . . . . . . . . . . . . . . . . . . . . . . 13C-2913.1.18 Mapping CORBA Exceptions to

    Automation Exceptions . . . . . . . . . . . . . . . . 13C-31

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    16/633

    xvi

    CORBA V2.0 July 1996

    13.1.19 Conventions for Naming Components ofthe Automation View . . . . . . . . . . . . . . . . . . 13C-37

    13.1.20 Naming Conventions for Pseudo-Structs,

    Pseudo-Unions, and Pseudo-Exceptions. . . . 13C-3813.1.21 Automation View Interface as a Dispatch

    Interface (Nondual). . . . . . . . . . . . . . . . . . . . 13C-3813.1.22 Aggregation of Automation Views . . . . . . . . 13C-3913.1.23 DII, DSI, and BOA . . . . . . . . . . . . . . . . . . . . 13C-39

    13.2 Mapping OLE Automation Objects as CORBAObjects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13C-40

    13.2.1 Architectural Overview. . . . . . . . . . . . . . . . . 13C-4013.2.2 Main Features of the Mapping . . . . . . . . . . . 13C-4113.2.3 Getting Initial Object References . . . . . . . . . 13C-41

    13.2.4 Mapping for Interfaces . . . . . . . . . . . . . . . . . 13C-4213.2.5 Mapping for Inheritance . . . . . . . . . . . . . . . . 13C-4213.2.6 Mapping for ODL Properties and

    Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13C-4313.2.7 Mapping for Automation Basic Data

    Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13C-4413.2.8 Conversion Errors . . . . . . . . . . . . . . . . . . . . . 13C-4513.2.9 Special Cases of Data Type Conversion . . . . 13C-4513.2.10 A Complete OMG IDL to ODL Mapping

    for the Basic Data Types . . . . . . . . . . . . . . . . 13C-4513.2.11 Mapping for Object References . . . . . . . . . . 13C-49

    13.2.12 Mapping for Enumerated Types . . . . . . . . . . 13C-5013.2.13 Mapping for SafeArrays . . . . . . . . . . . . . . . . 13C-5013.2.14 Mapping for Typedefs. . . . . . . . . . . . . . . . . . 13C-5113.2.15 Mapping for VARIANTs. . . . . . . . . . . . . . . . 13C-5113.2.16 Mapping Automation Exceptions to

    CORBA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13C-51

    Appendix C Sample Solutions for Older OLEAutomation Controllers . . . . . . . . . . . . . . . . . . C-1

    Appendix D Example Mappings. . . . . . . . . . . . . . . . . . . . . . D-1

    14. C Language Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-1

    14.1 Requirements for a Language Mapping . . . . . . . . . . . . . 14-114.1.1 Basic Data Types . . . . . . . . . . . . . . . . . . . . . 14-214.1.2 Constructed Data Types . . . . . . . . . . . . . . . . 14-214.1.3 Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-214.1.4 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-214.1.5 Invocation of Operations. . . . . . . . . . . . . . . . 14-314.1.6 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 14-3

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    17/633

    CORBA V2.0 July 1996

    xvii

    14.1.7 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-414.1.8 ORB Interfaces . . . . . . . . . . . . . . . . . . . . . . . 14-4

    14.2 Scoped Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-4

    14.3 Mapping for Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 14-5

    14.4 Inheritance and Operation Names . . . . . . . . . . . . . . . . . 14-6

    14.5 Mapping for Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . 14-7

    14.6 Mapping for Constants . . . . . . . . . . . . . . . . . . . . . . . . . . 14-8

    14.7 Mapping for Basic Data Types . . . . . . . . . . . . . . . . . . . . 14-8

    14.8 Mapping Considerations for Constructed Types. . . . . . . 14-10

    14.9 Mapping for Structure Types . . . . . . . . . . . . . . . . . . . . . 14-10

    14.10 Mapping for Union Types. . . . . . . . . . . . . . . . . . . . . . . . 14-11

    14.11 Mapping for Sequence Types . . . . . . . . . . . . . . . . . . . . . 14-11

    14.12 Mapping for Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-14

    14.13 Mapping for Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-16

    14.14 Mapping for Exception Types . . . . . . . . . . . . . . . . . . . . 14-16

    14.15 Implicit Arguments to Operations . . . . . . . . . . . . . . . . . 14-17

    14.16 Interpretation of Functions with Empty ArgumentLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-17

    14.17 Argument Passing Considerations . . . . . . . . . . . . . . . . . 14-18

    14.18 Return Result Passing Considerations . . . . . . . . . . . . . . 14-19

    14.19 Summary of Argument/Result Passing. . . . . . . . . . . . . . 14-20

    14.20 Handling Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-2214.21 Method Routine Signatures . . . . . . . . . . . . . . . . . . . . . . 14-24

    14.22 Include Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-25

    14.23 Pseudo-Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14-25

    14.24 Mapping of the Dynamic Skeleton Interface to C . . . . . 14-2614.24.1 Mapping of ServerRequest to C . . . . . . . . . . 14-2614.24.2 Mapping of BOAs Dynamic

    Implementation Routine to C . . . . . . . . . . . . 14-28

    14.25 BOA: Mapping for Object Implementations . . . . . . . . . 14-2814.25.1 Operation-specific Details. . . . . . . . . . . . . . . 14-2814.25.2 Method Signatures . . . . . . . . . . . . . . . . . . . . 14-2814.25.3 Binding Methods to Skeletons . . . . . . . . . . . 14-3014.25.4 BOA and ORB Operations . . . . . . . . . . . . . . 14-30

    14.26 ORB and OA/BOA Initialization Operations . . . . . . . . . 14-3114.26.1 ORB Initialization. . . . . . . . . . . . . . . . . . . . . 14-3114.26.2 OA/BOA Initialization . . . . . . . . . . . . . . . . . 14-32

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    18/633

    xviii

    CORBA V2.0 July 1996

    14.27 Operations for Obtaining Initial Object References . . . . 14-33

    15. C++ Mapping Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 15-1

    15.1 Key Design Decisions . . . . . . . . . . . . . . . . . . . . . . . . . . 15-115.1.1 Compliance. . . . . . . . . . . . . . . . . . . . . . . . . . 15-115.1.2 C++ Implementation Requirements . . . . . . . 15-115.1.3 C Data Layout Compatibility . . . . . . . . . . . . 15-215.1.4 No Implementation Descriptions . . . . . . . . . 15-2

    15.2 Organization of the C++ Mapping . . . . . . . . . . . . . . . . . 15-2

    16. Mapping of OMG IDL to C++. . . . . . . . . . . . . . . . . . . . . . 16-1

    16.1 Preliminary Information. . . . . . . . . . . . . . . . . . . . . . . . . 16-116.1.1 Scoped Names . . . . . . . . . . . . . . . . . . . . . . . 16-116.1.2 C++ Type Size Requirements . . . . . . . . . . . . 16-2

    16.1.3 CORBA Module . . . . . . . . . . . . . . . . . . . . . . 16-3

    16.2 Mapping for Modules. . . . . . . . . . . . . . . . . . . . . . . . . . . 16-3

    16.3 Mapping for Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 16-316.3.1 Object Reference Types . . . . . . . . . . . . . . . . 16-416.3.2 Widening Object References . . . . . . . . . . . . 16-516.3.3 Object Reference Operations . . . . . . . . . . . . 16-616.3.4 Narrowing Object References . . . . . . . . . . . . 16-716.3.5 Nil Object Reference . . . . . . . . . . . . . . . . . . 16-716.3.6 Interface Mapping Example . . . . . . . . . . . . . 16-8

    16.4 Mapping for Constants . . . . . . . . . . . . . . . . . . . . . . . . . . 16-9

    16.5 Mapping for Basic Data Types . . . . . . . . . . . . . . . . . . . . 16-10

    16.6 Mapping for Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-11

    16.7 Mapping for String Types. . . . . . . . . . . . . . . . . . . . . . . . 16-11

    16.8 Mapping for Structured Types . . . . . . . . . . . . . . . . . . . . 16-1216.8.1 T_var Types . . . . . . . . . . . . . . . . . . . . . . . . . 16-14

    16.9 Mapping for Struct Types . . . . . . . . . . . . . . . . . . . . . . . . 16-15

    16.10 Mapping for Union Types. . . . . . . . . . . . . . . . . . . . . . . . 16-18

    16.11 Mapping for Sequence Types . . . . . . . . . . . . . . . . . . . . . 16-2116.11.1 Sequence Example . . . . . . . . . . . . . . . . . . . . 16-24

    16.11.2 Using the release ConstructorParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-25

    16.11.3 Additional Memory ManagementFunctions . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-26

    16.11.4 Sequence T_var Type . . . . . . . . . . . . . . . . . . 16-27

    16.12 Mapping for Array Types . . . . . . . . . . . . . . . . . . . . . . . . 16-27

    16.13 Mapping for Typedefs . . . . . . . . . . . . . . . . . . . . . . . . . . 16-29

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    19/633

    CORBA V2.0 July 1996

    xix

    16.14 Mapping for the any Type . . . . . . . . . . . . . . . . . . . . . . . 16-3016.14.1 Handling Typed Values . . . . . . . . . . . . . . . . . 16-3116.14.2 Insertion into any . . . . . . . . . . . . . . . . . . . . . 16-31

    16.14.3 Extraction from any . . . . . . . . . . . . . . . . . . . 16-3416.14.4 Distinguishing boolean, octet, char, and

    Bounded String. . . . . . . . . . . . . . . . . . . . . . . 16-3616.14.5 Widening to Object. . . . . . . . . . . . . . . . . . . . 16-3916.14.6 Handling Untyped Values . . . . . . . . . . . . . . . 16-3916.14.7 any Constructors, Destructor, Assignment

    Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-4116.14.8 any Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . 16-4116.14.9 Any_var Class. . . . . . . . . . . . . . . . . . . . . . . . 16-41

    16.15 Mapping for Exception Types . . . . . . . . . . . . . . . . . . . . 16-41

    16.16 Mapping for Operations and Attributes . . . . . . . . . . . . . 16-4416.17 Implicit Arguments to Operations . . . . . . . . . . . . . . . . . 16-45

    16.18 Argument Passing Considerations . . . . . . . . . . . . . . . . . 16-45

    17. Mapping of Pseudo-Objects to C++ . . . . . . . . . . . . . . . . . . 17-1

    17.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1

    17.2 Mapping Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2

    17.3 Relation to the C PIDL Mapping . . . . . . . . . . . . . . . . . . 17-3

    17.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-317.4.1 Environment Interface . . . . . . . . . . . . . . . . . 17-4

    17.4.2 Environment C++ Class . . . . . . . . . . . . . . . . 17-417.4.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-417.4.4 Memory Management. . . . . . . . . . . . . . . . . . 17-4

    17.5 NamedValue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-517.5.1 NamedValue Interface. . . . . . . . . . . . . . . . . . 17-517.5.2 NamedValue C++ Class . . . . . . . . . . . . . . . . 17-517.5.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-517.5.4 Memory Management. . . . . . . . . . . . . . . . . . 17-5

    17.6 NVList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-617.6.1 NVList Interface. . . . . . . . . . . . . . . . . . . . . . 17-6

    17.6.2 NVList C++ Class . . . . . . . . . . . . . . . . . . . . 17-717.6.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-717.6.4 Memory Management. . . . . . . . . . . . . . . . . . 17-7

    17.7 Request. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-817.7.1 Request Interface . . . . . . . . . . . . . . . . . . . . . 17-1017.7.2 Request C++ Class . . . . . . . . . . . . . . . . . . . . 17-1117.7.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-12

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    20/633

    xx

    CORBA V2.0 July 1996

    17.7.4 Memory Management. . . . . . . . . . . . . . . . . . 17-12

    17.8 Context. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1317.8.1 Context Interface . . . . . . . . . . . . . . . . . . . . . 17-13

    17.8.2 Context C++ Class . . . . . . . . . . . . . . . . . . . . 17-1317.8.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-1417.8.4 Memory Management. . . . . . . . . . . . . . . . . . 17-14

    17.9 Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1417.9.1 Principal Interface. . . . . . . . . . . . . . . . . . . . . 17-1417.9.2 Principal C++ Class . . . . . . . . . . . . . . . . . . . 17-14

    17.10 TypeCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1517.10.1 TypeCode Interface. . . . . . . . . . . . . . . . . . . . 17-1517.10.2 TypeCode C++ Class . . . . . . . . . . . . . . . . . . 17-1617.10.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-1717.10.4 Memory Management. . . . . . . . . . . . . . . . . . 17-17

    17.11 BOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1717.11.1 BOA Interface. . . . . . . . . . . . . . . . . . . . . . . . 17-1717.11.2 BOA C++ Class . . . . . . . . . . . . . . . . . . . . . . 17-1817.11.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-18

    17.12 ORB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-1817.12.1 ORB Interface. . . . . . . . . . . . . . . . . . . . . . . . 17-1817.12.2 ORB C++ Class . . . . . . . . . . . . . . . . . . . . . . 17-1917.12.3 Differences from C-PIDL . . . . . . . . . . . . . . . 17-2017.12.4 Mapping of ORB and OA/BOA Initialization

    Operations . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2017.12.5 Mapping of Operations to Obtain Initial Object

    References . . . . . . . . . . . . . . . . . . . . . . . . . . 17-22

    17.13 Object. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17-2317.13.1 Object Interface . . . . . . . . . . . . . . . . . . . . . . 17-2317.13.2 Object C++ Class . . . . . . . . . . . . . . . . . . . . . 17-24

    18. Server-Side Mapping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-1

    18.1 Implementing Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . 18-1

    18.2 Implementing Operations . . . . . . . . . . . . . . . . . . . . . . . . 18-2

    18.3 Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-318.3.1 Using C++ Inheritance for Interface

    Implementation. . . . . . . . . . . . . . . . . . . . . . . 18-318.3.2 Using Delegation for Interface

    Implementation. . . . . . . . . . . . . . . . . . . . . . . 18-4

    18.4 Mapping of Dynamic Skeleton Interface to C++ . . . . . . 18-618.4.1 Mapping of ServerRequest to C++ . . . . . . . . 18-6

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    21/633

    CORBA V2.0 July 1996

    xxi

    18.4.2 Handling Operation Parameters andResults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18-7

    18.4.3 Sample Usage . . . . . . . . . . . . . . . . . . . . . . . . 18-7

    18.4.4 Reporting Exceptions . . . . . . . . . . . . . . . . . . 18-818.4.5 Mapping of BOAs Dynamic

    Implementation Routine . . . . . . . . . . . . . . . . 18-8

    Appendix E C++ Definitions for CORBA . . . . . . . . . . . . . . E-1

    Appendix F Alternative Mappings for C++ Dialects . . . . . . F-1

    Appendix G C++ Keywords . . . . . . . . . . . . . . . . . . . . . . . . . G-1

    19. Smalltalk Mapping Overview. . . . . . . . . . . . . . . . . . . . . . . 19-1

    19.1 Key Design Decisions . . . . . . . . . . . . . . . . . . . . . . . . . . 19-119.1.1 Consistency of Style, Flexibility and

    Portability of Implementation . . . . . . . . . . . . 19-219.2 Organization of the Smalltalk Mapping . . . . . . . . . . . . . 19-2

    19.3 Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-3

    19.4 Implementation Constraints . . . . . . . . . . . . . . . . . . . . . . 19-319.4.1 Avoiding Name Space Collisions . . . . . . . . . 19-319.4.2 Limitations on OMG IDL Types. . . . . . . . . . 19-4

    19.5 Smalltalk Implementation Requirements . . . . . . . . . . . . 19-4

    20. Mapping of OMG IDL to Smalltalk . . . . . . . . . . . . . . . . . 20-1

    20.1 Mapping Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1

    20.2 Conversion of Names to Smalltalk Identifiers . . . . . . . . 20-220.3 Mapping for Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3

    20.4 Memory Usage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3

    20.5 Mapping for Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-3

    20.6 Invocation of Operations . . . . . . . . . . . . . . . . . . . . . . . . 20-3

    20.7 Mapping for Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . 20-420.7.1 Mapping for Constants . . . . . . . . . . . . . . . . . 20-5

    20.8 Mapping for Basic Data Types . . . . . . . . . . . . . . . . . . . . 20-5

    20.9 Mapping for the Any Type . . . . . . . . . . . . . . . . . . . . . . . 20-7

    20.10 Mapping for Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-720.11 Mapping for Struct Types. . . . . . . . . . . . . . . . . . . . . . . . 20-8

    20.12 Mapping for Union Types. . . . . . . . . . . . . . . . . . . . . . . . 20-820.12.1 Implicit Binding . . . . . . . . . . . . . . . . . . . . . . 20-920.12.2 Explicit Binding . . . . . . . . . . . . . . . . . . . . . . 20-9

    20.13 Mapping for Sequence Types . . . . . . . . . . . . . . . . . . . . . 20-10

    20.14 Mapping for String Types. . . . . . . . . . . . . . . . . . . . . . . . 20-10

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    22/633

    xxii

    CORBA V2.0 July 1996

    20.15 Mapping for Array Types . . . . . . . . . . . . . . . . . . . . . . . . 20-10

    20.16 Mapping for Exception Types . . . . . . . . . . . . . . . . . . . . 20-10

    20.17 Mapping for Operations . . . . . . . . . . . . . . . . . . . . . . . . . 20-10

    20.18 Implicit Arguments to Operations . . . . . . . . . . . . . . . . . 20-11

    20.19 Argument Passing Considerations . . . . . . . . . . . . . . . . . 20-11

    20.20 Handling Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-1120.20.1 Exception Values . . . . . . . . . . . . . . . . . . . . . 20-1220.20.2 The CORBAExceptionValue Protocol . . . . . 20-13

    21. Mapping of Pseudo-Objects to Smalltalk . . . . . . . . . . . . . 21-1

    21.1 CORBA::Request . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-1

    21.2 CORBA::Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-2

    21.3 CORBA::Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-3

    21.4 CORBA::ORB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-3

    21.5 CORBA::NamedValue . . . . . . . . . . . . . . . . . . . . . . . . . . 21-4

    21.6 CORBA::NVList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-5

    Glossary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glossary-1

    http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-
  • 8/3/2019 CORBA_2.0

    23/633

    CORBA V2.0 July 1996

    1

    Preface

    0.1 About This Document

    Under the terms of the collaboration between OMG and X/Open Co Ltd., thisdocument is a candidate for endorsement by X/Open, initially as a PreliminarySpecification and later as a full CAE Specification. The collaboration between OMGand X/Open Co Ltd. ensures joint review and cohesive support for emerging object-based specifications.

    X/Open Preliminary Specifications undergo close scrutiny through a review process atX/Open before publication and are inherently stable specifications. Upgrade to fullCAE Specification, after a reasonable interval, takes place following further review by

    X/Open. This further review considers the implementation experience of members andthe full implications of conformance and branding.

    0.1.1 Object Management Group

    The Object Management Group, Inc. (OMG) is an international organization supportedby over 500 members, including information system vendors, software developers andusers. Founded in 1989, the OMG promotes the theory and practice of object-orientedtechnology in software development. The organization's charter includes theestablishment of industry guidelines and object management specifications to provide acommon framework for application development. Primary goals are the reusability,portability, and interoperability of object-based software in distributed, heterogeneous

    environments. Conformance to these specifications will make it possible to develop aheterogeneous applications environment across all major hardware platforms andoperating systems.

    OMG's objectives are to foster the growth of object technology and influence itsdirection by establishing the Object Management Architecture (OMA). The OMAprovides the conceptual infrastructure upon which all OMG specifications are based.

  • 8/3/2019 CORBA_2.0

    24/633

    2

    CORBA V2.0 July 1996

    0.1.2 X/Open

    X/Open is an independent, worldwide, open systems organization supported by most ofthe world's largest information system suppliers, user organizations and softwarecompanies. Its mission is to bring to users greater value from computing, through thepractical implementation of open systems. X/Opens strategy for achieving its missionis to combine existing and emerging standards into a comprehensive, integratedsystems environment called the Common Applications Environment (CAE).

    The components of the CAE are defined in X/Open CAE specifications. These contain,among other things, an evolving portfolio of practical application programminginterfaces (APIs), which significantly enhance portability of application programs atthe source code level. The APIs also enhance the interoperability of applications byproviding definitions of, and references to, protocols and protocol profiles.

    The X/Open specifications are also supported by an extensive set of conformance testsand by the X/Open trademark (XPG brand), which is licensed by X/Open and iscarried only on products that comply with the CAE specifications.

    0.2 Intended Audience

    The architecture and specifications described in this manual are aimed at softwaredesigners and developers who want to produce applications that comply with OMGstandards for the Object Request Broker (ORB). The benefit of compliance is, ingeneral, to be able to produce interoperable applications that are based on distributed,interoperating objects. As defined by the Object Management Group (OMG) in theObject Management Architecture Guide, the ORB provides the mechanisms by whichobjects transparently make requests and receive responses. Hence, the ORB provides

    interoperability between applications on different machines in heterogeneousdistributed environments and seamlessly interconnects multiple object systems.

    0.3 Context of CORBA

    The key to understanding the structure of the CORBA architecture is the ReferenceModel, which consists of the following components:

    Object Request Broker

    , which enables objects to transparently make and receiverequests and responses in a distributed environment. It is the foundation forbuilding applications from distributed objects and for interoperability betweenapplications in hetero- and homogeneous environments. The architecture andspecifications of the Object Request Broker are described in this manual

    .

    Object Services

    , a collection of services (interfaces and objects) that supportbasic functions for using and implementing objects. Services are necessary toconstruct any distributed application and are always independent of applicationdomains. For example, the Life Cycle Service defines conventions for creating,deleting, copying, and moving objects; it does not dictate how the objects areimplemented in an application. Specifications for Object Services are contained inCORBAservices: Common Object Services Specification.

  • 8/3/2019 CORBA_2.0

    25/633

    CORBA V2.0 Associated Documents July 1996

    3

    Common Facilities

    , a collection of services that many applications may share,but which are not as fundamental as the Object Services. For instance, a systemmanagement or electronic mail facility could be classified as a common facility.

    Information about Common Facilities will be contained in CORBAfacilities:Common Facilities Architecture

    .

    Application Objects, which are products of a single vendor on in-housedevelopment group which controls their interfaces. Application Objectscorrespond to the traditional notion of applications, so they are not standardizedby OMG. Instead, Application Objects constitute the uppermost layer of theReference Model.

    The Object Request Broker, then, is the core of the Reference Model. It is like atelephone exchange, providing the basic mechanism for making and receiving calls.Combined with the Object Services, it ensures meaningful communication betweenCORBA-compliant applications.

    (For more information about the OMG Reference Model and the OMG Object Model,refer to the Object Management Architecture Guide).

    0.4 Associated Documents

    The CORBA documentation set includes the following books:

    Object Management Architecture Guide defines the OMGs technical objectivesand terminology and describes the conceptual models upon which OMG standardsare based. It also

    provides information about the policies and procedures ofOMG, such as how standards are proposed, evaluated, and accepted.

    CORBA: Common Object Request Broker Architecture and Specification containsthe architecture and specifications for the Object Request Broker.

    CORBAservices: Common Object Services Specification contains specificationsfor the Object Services.

    CORBAfacilities: Common Facilities Architecture contains the architecture forCommon Facilities.

    OMG collects information for each book in the documentation set by issuing Requestsfor Information, Requests for Proposals, and Requests for Comment and, with itsmembership, evaluating the responses. Specifications are adopted as standards onlywhen representatives of the OMG membership accept them as such by vote.

    To obtain books in the documentation set, or other OMG publications, refer to theenclosed subscription card or contact the Object Management Group, Inc. at:

    OMG Headquarters492 Old Connecticut PathFramingham, MA 01701

    USATel: +1-508-820 4300Fax: +1-508-820 4303

    [email protected]://www.omg.org/

  • 8/3/2019 CORBA_2.0

    26/633

    4

    CORBA V2.0 July 1996

    0.5 Structure of This Manual

    This manual

    is divided into the categories of

    Core, Interoperability, Interworking, and

    individual Language Mappings. These divisions reflect the compliance points ofCORBA, as explained in Section 0.6, Definition of CORBA Compliance, on page 6.In addition to this preface,

    CORBA: Common Object Request Broker Architecture and

    Specification contains the following chapters

    :

    Core

    The Object Model describes the computation model that underlies the CORBAarchitecture.

    Architecture describes the overall structure of the ORB architecture and includesinformation about CORBA interfaces and implementations.

    OMG IDL Syntax and Semantics describes OMG interface definition language

    (OMG IDL), which is the language used to describe the interfaces that client objectscall and object implementations provide.

    The Dynamic Invocation Interface describes the DII, the clients side of the interfacethat allows dynamic creation and invocation of request to objects.

    The Dynamic Skeleton Interface describes

    the DSI, the servers-side interface that candeliver requests from an ORB to an object implementation that does not have compile-time knowledge of the type of the object it is implementing. DSI is the serversanalogue of the clients Dynamic Invocation Interface (DII).

    Interface Repository describes the component of the ORB that manages and providesaccess to a collection of object definitions.

    ORB Interface describes the interface to the ORB functions that do not depend onobject adapters: these operations are the same for all ORBs and objectimplementations.

    Basic Object Adapter describes the primary interface than an implementation uses toaccess ORB functions.

    An appendix

    that contains standard OMG IDL types.

    Interoperability

    Interoperability

    Overview

    explains the interoperability architecture and introducesthe subjects pertaining to interoperability: inter-ORB bridges; general and Internet

    inter-ORB protocols (GIOP and IIOP); and environment-specific, inter-ORB protocols(ESIOPs).

    Interoperability Architecture

    introduces the framework of ORB interoperability,including information about domains; approaches to inter-ORB bridges; what it meansto be compliant with ORB interoperability; and ORB Services and Requests.

    Inter-ORB Bridges explains how to build bridges for an implementation ofinteroperating ORBs.

  • 8/3/2019 CORBA_2.0

    27/633

    CORBA V2.0 Structure of This Manual July 1996

    5

    Inter-ORB Protocols describes the general inter-ORB protocol (GIOP) and includesinformation about the GIOPs goals, syntax, format, transport, and object location. Thischapter also includes information about the Internet inter-ORB protocol (IIOP).

    Environment-Specific Inter-ORB Protocol (ESIOP) describes a protocol for theOSF DCE environment. The protocol is called the DCE Environment Inter-ORBProtocol (DCE ESIOP).

    An appendix

    containing

    OMG IDL tags that can identify an Object Service, acomponent, or a profile.

    Interworking

    Interworking Architecture describes the architecture for communication between twoobject management systems: Microsofts COM (including OLE) and the OMGsCORBA.

    Mapping: OLE Automation and CORBA describes the two-way mapping betweenOLE Automation (in ODL) and CORBA (in OMG IDL).

    Mapping: COM and CORBA describes the data type and interface mapping betweenCOM and CORBA. The mappings are described in the context of both Win16 andWin32 COM.

    An appendix describing solutions that vendors might implement to support existingand older OLE Automation controllers.

    An appendix that provides an example of how the Naming Service could be mappedto an OLE Automation interface according to the Interworking specification.

    C Language Mapping

    Mapping of OMG IDL to C maps OMG IDL to the C programming language.

    C++ Language Mapping

    C++ Mapping Overview introduces the mapping of OMG IDL to the C++programming language.

    Mapping of OMG IDL to C++ maps the constructs of OMG IDL to the C++programming language.

    Mapping of Pseudo Objects to C++ maps OMG IDL pseudo objects to the C++

    programming language.

    Server-Side Mapping explains the portability constraints for an object implementationwritten in C++.

    The C++ language mapping also includes several appendices. One contains C++definitions for CORBA, another contains alternate C++ mappings, and anothercontains C++ keywords.

  • 8/3/2019 CORBA_2.0

    28/633

    6 CORBA V2.0 July 1996

    Smalltalk Language Mapping

    Smalltalk Mapping Overview introduces the mapping of OMG IDL to the Smalltalkprogramming language.

    Mapping of OMG IDL to Smalltalk maps the constructs of OMG IDL to theSmalltalk programming language.

    Mapping of Pseudo Objects to Smalltalk maps OMG IDL pseudo-objects toSmalltalk.

    0.6 Definition of CORBA Compliance

    As described in the OMA Guide, the OMGs Core Object Model consists of a core andcomponents. Likewise, the body ofCORBA specifications is divided into core andcomponent-like specifications. The structure of this manual reflects that division.

    The CORBA specifications are categorized as follows:

    CORBA Core, as specified in Chapters 1-8

    CORBA Interoperability, as specified in Chapters 9-13

    CORBA Interworking, as specified in Chapters 13A, 13B, and 13C

    Mapping of OMG IDL to the C programming language, as specified in Chapter 14

    Mapping of OMG IDL to the C++ programming language, as specified in Chapters15-18

    Mapping of OMG IDL to the Smalltalk programming language, as specified in

    Chapters 19-21

    (Additional OMG IDL mappings will be available with future updates ofCORBA.)

    The minimum required for a CORBA-compliant system is adherence to thespecifications in CORBA Core and one mapping. Each additional language mapping isa separate, optional compliance point. Optional means users arent required toimplement these points if they are unnecessary at their site, but if implemented, theymust adhere to the CORBA specifications to be called CORBA-compliant. Forinstance, if a vendor supports C++, their ORB must comply with the OMG IDL to C++binding specified in this manual.

    Interoperability and Interworking are separate compliance points. For detailed

    information about Interworking compliance, refer to Section 13.10.1, ProductsSubject to Compliance, on page 13A-34.

  • 8/3/2019 CORBA_2.0

    29/633

    CORBA V2.0 Typographical Conventions July 1996 7

    0.7 Typographical Conventions

    The type styles shown below are used in this document to distinguish programming

    statements from ordinary English. However, these conventions are not used in tables orsection headings, where no distinction is necessary, nor are the type styles used in textwhere their density would be distracting.

    Helvetica bold OMG Interface Definition Language (OMG IDL) language andsyntax elements.

    Times bold Pseudo-OMG IDL (PIDL) language elements.

    Courier bold Programming language elements or any interface definitionlanguage other than OMG IDL.

    Code examples written in PIDL and programming languages are further identified by acomment; unidentified examples are written in OMG IDL.

    0.8 Acknowledgements

    The following companies submitted parts of the specifications that were approved bythe Object Management Group to become CORBA:

    BNR Europe Ltd.

    Expersoft Corporation

    FUJITSU LIMITED

    Genesis Development Corporation

    IBM Corporation

    ICL plc IONA Technologies Ltd.

    Digital Equipment Corporation

    Hewlett-Packard Company

    HyperDesk Corporation

    NCR Corporation

    Novell USG

    Object Design, Inc.

    Siemens Nixdorf Informationssysteme AG

    Sun Microsystems Inc.

    SunSoft, Inc.

    Sybase, Inc.

    Visual Edge Software, Ltd.

    In addition to the preceding contributors, the OMG would like to acknowledge MarkLinton at Silicon Graphics and Doug Lea at the State University of New York atOswego for their work on the C++ mapping.

  • 8/3/2019 CORBA_2.0

    30/633

    8 CORBA V2.0 July 1996

  • 8/3/2019 CORBA_2.0

    31/633

    CORBA V2.0 July 1995 1-1

    The Object Model 1

    This chapter describes the concrete object model that underlies the CORBAarchitecture. The model is derived from the abstract Core Object Model defined by theObject Management Group in the Object Management Architecture Guide.(Information about the OMAGuide and other books in the CORBA documentation setis provided in this documents preface.)

    1.1 Overview

    The object model provides an organized presentation of object concepts andterminology. It defines a partial model for computation that embodies the key

    characteristics of objects as realized by the submitted technologies. The OMG objectmodel is abstract in that it is not directly realized by any particular technology. Themodel described here is a concrete object model. A concrete object model may differfrom the abstract object model in several ways:

    It may elaborate the abstract object model by making it more specific, forexample, by defining the form of request parameters or the language used tospecify types

    It maypopulate the model by introducing specific instances of entities defined bythe model, for example, specific objects, specific operations, or specific types

    It may restrictthe model by eliminating entities or placing additional restrictionson their use

    An object system is a collection of objects that isolates the requestors of services(clients) from the providers of services by a well-defined encapsulating interface. Inparticular, clients are isolated from the implementations of services as datarepresentations and executable code.

    The object model first describes concepts that are meaningful to clients, including suchconcepts as object creation and identity, requests and operations, types and signatures.It then describes concepts related to object implementations, including such conceptsas methods, execution engines, and activation.

  • 8/3/2019 CORBA_2.0

    32/633

    1-2 CORBA V2.0 July 1995

    1

    The object model is most specific and prescriptive in defining concepts meaningful toclients. The discussion of object implementation is more suggestive, with the intent ofallowing maximal freedom for different object technologies to provide different ways

    of implementing objects.There are some other characteristics of object systems that are outside the scope of theobject model. Some of these concepts are aspects of application architecture, some areassociated with specific domains to which object technology is applied. Such conceptsare more properly dealt with in an architectural reference model. Examples of excludedconcepts are compound objects, links, copying of objects, change management, andtransactions. Also outside the scope of the object model is the model of control andexecution.

    This object model is an example of a classical object model, where a client sends amessage to an object. Conceptually, the object interprets the message to decide whatservice to perform. In the classical model, a message identifies an object and zero or

    more actual parameters. As in most classical object models, a distinguished firstparameter is required, which identifies the operation to be performed; the interpretationof the message by the object involves selecting a method based on the specifiedoperation. Operationally, of course, method selection could be performed either by theobject or the ORB.

    1.2 Object Semantics

    An object system provides services to clients. A clientof a service is any entitycapable of requesting the service.

    This section defines the concepts associated with object semantics, that is, the conceptsrelevant to clients.

    1.2.1 Objects

    An object system includes entities known as objects. An object is an identifiable,encapsulated entity that provides one or more services that can be requested by aclient.

    1.2.2 Requests

    Clients request services by issuing requests. A requestis an event, i.e. something thatoccurs at a particular time. The information associated with a request consists of an

    operation, a target object, zero or more (actual) parameters, and an optional requestcontext.

    A request form is a description or pattern that can be evaluated or performed multipletimes to cause the issuing of requests. As described in the OMG IDL Syntax andSemantics chapter, request forms are defined by particular language bindings. Analternative request form consists of calls to the dynamic invocation interface to create

  • 8/3/2019 CORBA_2.0

    33/633

    CORBA V2.0 Object Semantics July 1995 1-3

    1

    an invocation structure, add arguments to the invocation structure, and to issue theinvocation (refer to the C Language Mapping chapter and the Dynamic InvocationInterface chapter for descriptions of these request forms).

    A value is anything that may be a legitimate (actual) parameter in