Bionic Buffalo Tech Note #52: Object Keys, Object Identifiers, and Adapter Names
“nobody's%20POA”
in an object key.
The specification organizes POAs into a tree-structured hierarchy, beginning at the root POA.
Tatanka
TM
software refers to individual POAs using a pathname similar to a filesystem path name,
beginning with the root POA. For example,
“/alpha/beta”
refers to POA
beta
, which is a child
of POA
alpha
, which is a child of the root POA. (The path name separator
“/”
is always escaped in
the POA names themselves, so parsing is simplified.)
Object Identifier (OID) Names
Except for some pseudo objects and objects which are intrinsic to the ORB implementation, objects are
implemented by servants, not by the ORB itself. Servants are separate application programs which
implement objects. The ORB only brokers the communication among applications. A servant
communicates with an ORB through an adapter. (Most adapters are portable object adapters, or POAs,
whose interfaces are defined by the CORBA core specification.)
Within a given adapter, an object is uniquely identified by its object identifer (OID). The OID is
opaque to the ORB. Object identifiers (OIDs) may be assigned by the system (ORB), or they may be
assigned by the application or servant, depending on the POA's
IdAssignmentPolicy
. (When the
servant allows the ORB to define the OIDs, it is simply the servant's use of a convenient service.)
A message to an object from a client application is passed to the POA by the ORB. The POA then
passes the message to the servant, identifying the appropriate servant by using the OID.
The specification allows any octet to appear in an OID, including
NULL
s. The Tatanka
TM
ORBs also
permit this, allowing an application or servant to use any value convenient to it.
Interoperable Object References (IORs) and Object Keys
In an interoperable object reference (IOR), an object is identified by the ORB's address and by the
object's key. (The situation is slightly more complex than this, but this is a good approximation.) An
IOR also contains the object's repository identifier.
The repository identifier tells what type of object is referenced, but does not serve to
identify the object directly. Of course, there may be many objects with the same
repository identifier.
The ORB's address is a network address, host name, pipe name, or other information used
to communicate with the ORB. An IOR may contain more than one address, if the ORB is
accessible in more than one way.
The key provides a way for the ORB to identify the object. It may be defined arbitrarily
by the ORB. However, as will be shown, it is efficient to assign in systematically as
Page 2 of 5