Bionic Buffalo Tech Note #100: Identifying CORBA Objects
Obtaining Object References
The first object reference obtained by an application is that of the ORB, which is itself
an object. This is done through the operation,
CORBA::ORB_init
. Each language
mapping defines a syntax for
CORBA::ORB_init
. Once the application has the
ORB's object reference, it may then invoke ORB operations to obtain references for
initial services.
The two most important initial services for obtaining additional object references are
the Naming Service and the Trading Service, although other services are also defined.
The Naming Service provides a standard interface to a tree-structured directory of
names, similar to that of the directory associated with a traditional file system. The
Trader Service is similar to a database, where objects can be looked up based on
service type, interface, and name-value property pairs. It is not required that an object
be discoverable using any such service, and it is possible that an object may be
accessible using more than one such service. Some ORBs do not provide either of
these standard initial services.
Interoperable Object References
An object reference is not, in general, portable among different ORBs. However, there
is a need for ORBs to interoperate, so a special interoperable object reference, or
IOR, is defined.
Rather than discussing interoperability in terms of disparate ORBs, the specifications
introduce the concept of domains. The particular kind of domain of interest here is a
referencing domain, within which a given object reference is valid. A referencing
domain may encompass one or more ORBs. Among different referencing domains,
IORs may be used. As with ordinary object references, IORs are opaque to
applications. An application deals with object references, which the ORB maps to and
from IORs as needed.
An IOR is created by an ORB. The IOR contains one or more profiles, each of which
is associated with a communications protocol. (However, when more than one profile
is present, some of these may contain information shared among multiple protocols.)
The information in a profile allows another ORB to communicate with the originating
ORB using the designated protocol. For example, the profiles used with the internet
protocol include the internet address and port of the ORB which manages the object,
as well as an opaque octet sequence (the key) used by the managing ORB to identify
the specific object associated with the IOR. Although the ORB might use an object's
<adapter, object id> pair as the key, this is not mandatory, and any other suitable
mechanism might be used.
In addition to network address and object identification information, a profile may
contain additional information related to ORB interoperability. Such information may
include object type information, policy values, security parameters, code set
Page 3 of 7