<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns:fn="http://www.w3.org/2005/02/xpath-functions"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css"> <title>Erlang -- Introduction to Orber</title> </head> <body bgcolor="white" text="#000000" link="#0000ff" vlink="#ff00ff" alink="#ff0000"><div id="container"> <script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript"> <!-- function getWinHeight() { var myHeight = 0; if( typeof( window.innerHeight ) == 'number' ) { //Non-IE myHeight = window.innerHeight; } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { //IE 6+ in 'standards compliant mode' myHeight = document.documentElement.clientHeight; } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { //IE 4 compatible myHeight = document.body.clientHeight; } return myHeight; } function setscrollpos() { var objf=document.getElementById('loadscrollpos'); document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2; } function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, true); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } } addEvent(window, 'load', setscrollpos); //--></script><div id="leftnav"><div class="innertube"> <img alt="Erlang logo" src="../../../../doc/erlang-logo.png"><br><small><a href="users_guide.html">User's Guide</a><br><a href="index.html">Reference Manual</a><br><a href="release_notes.html">Release Notes</a><br><a href="../pdf/orber-3.6.24.pdf">PDF</a><br><a href="../../../../doc/index.html">Top</a></small><p><strong>orber</strong><br><strong>User's Guide</strong><br><small>Version 3.6.24</small></p> <br><a href="javascript:openAllFlips()">Expand All</a><br><a href="javascript:closeAllFlips()">Contract All</a><p><small><strong>Chapters</strong></small></p> <ul class="flipMenu" imagepath="../../../../doc/js/flipmenu"> <li id="no" title="The Orber Application" expanded="false">The Orber Application<ul> <li><a href="ch_contents.html"> Top of chapter </a></li> <li title="Content Overview"><a href="ch_contents.html#id61214">Content Overview</a></li> <li title="Brief Description of the User's Guide"><a href="ch_contents.html#id62498">Brief Description of the User's Guide</a></li> </ul> </li> <li id="loadscrollpos" title="Introduction to Orber" expanded="true">Introduction to Orber<ul> <li><a href="ch_introduction.html"> Top of chapter </a></li> <li title="Overview"><a href="ch_introduction.html#id64790">Overview</a></li> </ul> </li> <li id="no" title="The Orber Application" expanded="false">The Orber Application<ul> <li><a href="ch_orber_kernel.html"> Top of chapter </a></li> <li title="ORB Kernel and IIOP "><a href="ch_orber_kernel.html#id57197">ORB Kernel and IIOP </a></li> <li title="The Object Request Broker (ORB)"><a href="ch_orber_kernel.html#id63374">The Object Request Broker (ORB)</a></li> <li title="Internet Inter-Object Protocol (IIOP)"><a href="ch_orber_kernel.html#id65057">Internet Inter-Object Protocol (IIOP)</a></li> </ul> </li> <li id="no" title="Interface Repository" expanded="false">Interface Repository<ul> <li><a href="ch_ifr.html"> Top of chapter </a></li> <li title="Interface Repository(IFR)"><a href="ch_ifr.html#id64309">Interface Repository(IFR)</a></li> </ul> </li> <li id="no" title="Installing Orber" expanded="false">Installing Orber<ul> <li><a href="ch_install.html"> Top of chapter </a></li> <li title="Installation Process "><a href="ch_install.html#id62824">Installation Process </a></li> <li title="Configuration"><a href="ch_install.html#id74009">Configuration</a></li> <li title="Firewall Configuration"><a href="ch_install.html#id76130">Firewall Configuration</a></li> <li title="Interface Configuration"><a href="ch_install.html#id76571">Interface Configuration</a></li> </ul> </li> <li id="no" title="OMG IDL to Erlang Mapping" expanded="false">OMG IDL to Erlang Mapping<ul> <li><a href="ch_idl_to_erlang_mapping.html"> Top of chapter </a></li> <li title="OMG IDL to Erlang Mapping - Overview"><a href="ch_idl_to_erlang_mapping.html#id76788">OMG IDL to Erlang Mapping - Overview</a></li> <li title="OMG IDL Mapping Elements"><a href="ch_idl_to_erlang_mapping.html#id76811">OMG IDL Mapping Elements</a></li> <li title="Getting Started"><a href="ch_idl_to_erlang_mapping.html#id76868">Getting Started</a></li> <li title="Basic OMG IDL Types"><a href="ch_idl_to_erlang_mapping.html#id76929">Basic OMG IDL Types</a></li> <li title="Template OMG IDL Types and Complex Declarators"><a href="ch_idl_to_erlang_mapping.html#id77470">Template OMG IDL Types and Complex Declarators</a></li> <li title="Constructed OMG IDL Types"><a href="ch_idl_to_erlang_mapping.html#id77956">Constructed OMG IDL Types</a></li> <li title="Scoped Names and Generated Files"><a href="ch_idl_to_erlang_mapping.html#id78395">Scoped Names and Generated Files</a></li> <li title="Typecode, Identity and Name Access Functions"><a href="ch_idl_to_erlang_mapping.html#id78787">Typecode, Identity and Name Access Functions</a></li> <li title="References to Constants"><a href="ch_idl_to_erlang_mapping.html#id78931">References to Constants</a></li> <li title="References to Objects Defined in OMG IDL"><a href="ch_idl_to_erlang_mapping.html#id78990">References to Objects Defined in OMG IDL</a></li> <li title="Exceptions"><a href="ch_idl_to_erlang_mapping.html#id79013">Exceptions</a></li> <li title="Access to Attributes"><a href="ch_idl_to_erlang_mapping.html#id79046">Access to Attributes</a></li> <li title="Invocations of Operations"><a href="ch_idl_to_erlang_mapping.html#id79103">Invocations of Operations</a></li> <li title="Implementing the DB Application"><a href="ch_idl_to_erlang_mapping.html#id79262">Implementing the DB Application</a></li> <li title="Reserved Compiler Names and Keywords"><a href="ch_idl_to_erlang_mapping.html#id79480">Reserved Compiler Names and Keywords</a></li> <li title="Type Code Representation"><a href="ch_idl_to_erlang_mapping.html#id80225">Type Code Representation</a></li> </ul> </li> <li id="no" title="CosNaming Service" expanded="false">CosNaming Service<ul> <li><a href="ch_naming_service.html"> Top of chapter </a></li> <li title="Overview of the CosNaming Service"><a href="ch_naming_service.html#id80888">Overview of the CosNaming Service</a></li> <li title="The Basic Use-cases of the Naming Service"><a href="ch_naming_service.html#id81031">The Basic Use-cases of the Naming Service</a></li> <li title="Interoperable Naming Service"><a href="ch_naming_service.html#id81378">Interoperable Naming Service</a></li> </ul> </li> <li id="no" title="How to use security in Orber" expanded="false">How to use security in Orber<ul> <li><a href="ch_security.html"> Top of chapter </a></li> <li title="Security in Orber"><a href="ch_security.html#id82238">Security in Orber</a></li> </ul> </li> <li id="no" title="Orber Stubs/Skeletons" expanded="false">Orber Stubs/Skeletons<ul> <li><a href="ch_stubs.html"> Top of chapter </a></li> <li title="Orber Stubs and Skeletons Description"><a href="ch_stubs.html#id82459">Orber Stubs and Skeletons Description</a></li> </ul> </li> <li id="no" title="CORBA System and User Defined Exceptions" expanded="false">CORBA System and User Defined Exceptions<ul> <li><a href="ch_exceptions.html"> Top of chapter </a></li> <li title="System Exceptions"><a href="ch_exceptions.html#id83036">System Exceptions</a></li> <li title="User Defined Exceptions"><a href="ch_exceptions.html#id83473">User Defined Exceptions</a></li> <li title="Throwing Exceptions"><a href="ch_exceptions.html#id83493">Throwing Exceptions</a></li> <li title="Catching Exceptions"><a href="ch_exceptions.html#id83525">Catching Exceptions</a></li> </ul> </li> <li id="no" title="Orber Interceptors" expanded="false">Orber Interceptors<ul> <li><a href="ch_interceptors.html"> Top of chapter </a></li> <li title="Using Interceptors"><a href="ch_interceptors.html#id83634">Using Interceptors</a></li> <li title="Interceptor Example"><a href="ch_interceptors.html#id83850">Interceptor Example</a></li> </ul> </li> <li id="no" title="OrberWeb" expanded="false">OrberWeb<ul> <li><a href="ch_orberweb.html"> Top of chapter </a></li> <li title="Using OrberWeb"><a href="ch_orberweb.html#id84111">Using OrberWeb</a></li> <li title="Starting OrberWeb"><a href="ch_orberweb.html#id84699">Starting OrberWeb</a></li> </ul> </li> <li id="no" title="Debugging" expanded="false">Debugging<ul> <li><a href="ch_debugging.html"> Top of chapter </a></li> <li title="Tools and FAQ"><a href="ch_debugging.html#id84785">Tools and FAQ</a></li> </ul> </li> </ul> </div></div> <div id="content"> <div class="innertube"> <h1>2 Introduction to Orber</h1> <h3><a name="id64790">2.1 Overview</a></h3> <p>The Orber application is a CORBA compliant Object Request Brokers (ORB), which provides CORBA functionality in an Erlang environment. Essentially, the ORB channels communication or transactions between nodes in a heterogeneous environment. </p> <p>CORBA(Common Object Request Broker Architecture) provides an interface definition language allowing efficient system integration and also supplies standard specifications for some services. </p> <p>The Orber application contains the following parts:</p> <ul> <li> <p>ORB kernel and IIOP support</p> </li> <li> <p>Interface Repository</p> </li> <li> <p>Interface Definition Language Mapping for Erlang</p> </li> <li> <p>CosNaming Service</p> </li> </ul> <h4>Benefits</h4> <p>Orber provides CORBA functionality in an Erlang environment that enables: </p> <ul> <li> <p><strong>Platform interoperability and transparency</strong></p> <p>Orber enables communication between OTP applications or Erlang environment applications and other platforms; for example, Windows NT, Solaris etc, allowing platform transparency. This is especially helpful in situations where there are many users with different platforms. For example, booking airline tickets would require the airline database and hundreds of travel agents (who may not have the same platform) to book seats on flights. </p> </li> <li> <p><strong>Application level interoperability and transparency</strong></p> <p>As Orber is a CORBA compliant application, its purpose is to provide interoperability and transparency on the application level. Orber simplifies the distributed system software by defining the environment as objects, which in effect, views everything as identical regardless of programming languages. <br> Previously, time-consuming programming was required to facilitate communication between different languages. However, with CORBA compliant Orber the Application Programmer is relieved of this task. This makes communication on an application level relatively transparent to the user.</p> </li> </ul> <h4>Purpose and Dependencies</h4> <p>The system architecture and OTP dependencies of Orber are illustrated in figure 1 below:</p> <a name="dependent"></a> <img alt="IMAGE MISSING" src="dependent.gif"><br> <em>Figure 2.1: Figure 1: Orber Dependencies and Structure.</em> <p>Orber is dependent on Mnesia (see the Mnesia documentation) - an Erlang database management application used to store object information.</p> <div class="note"> <div class="label">Note</div> <div class="content"><p> <p>Although Orber does not have a run-time application dependency to IC (an IDLcompiler for Erlang), it is necessary when building services and applications. See the IC documentation for further details.</p> </p></div> </div> <a name="orbs"></a> <img alt="IMAGE MISSING" src="orbs.gif"><br> <em>Figure 2.2: Figure 2: ORB interface between Java and Erlang Environment Nodes.</em> <p>This simplified illustration in figure 2 demonstrates how Orber can facilitate communication in a heterogeneous environment. The Erlang Nodes running OTP and the other Node running applications written in Java can communicate via an ORB(Object Request Broker). Using Orber means that CORBA functions can be used to achieve this communication. </p> <p>For example, if one of the above nodes requests an object, it does not need to know if that object is located on the same, or different, Erlang or Java nodes. The ORB will channel the information creating platform and application transparency for the user. </p> <h4>Prerequisites</h4> <p>To fully understand the concepts presented in the documentation, it is recommended that the user is familiar with distributed programming and CORBA (Common Object Request Broker Architecture). </p> <p>Recommended reading includes <strong>Open Telecom Platform Documentation Set</strong> and <strong>Concurrent Programming in Erlang</strong>. </p> </div> <div class="footer"> <hr> <p>Copyright © 1997-2012 Ericsson AB. All Rights Reserved.</p> </div> </div> </div></body> </html>