498 DISTRIBUTED OBJECT-BASED SYSTEMS CHAP . 9
An implementation repository is also tightly coupled to the organization and implementation of object servers . As we explained in Chap . 3 , an object adapter has the responsibility for activating an object by ensuring that it is running in the address space of a server so that its methods can be invoked . Given an object reference , an adapter could contact the implementation repository to find out exactly what needs to be done .
For example , the implementation repository could maintain a table specifying that a new server should be started and also to which port number the new server should be listening for the specified object . The repository would furthermore have information about which executable file ( i . e ., binary progra ) the server should load and execute .
Alternatively , it may not be necessary to start a separate server , but the current one need merely link to a specific library containing the requested method or object . Again , such information would typically be stored in an implementation repository . These two examples illustrate that such a repository is indeed closely tied to an ORB and the platform on which it is running .
CORBA Services
An important part of CORBA ’ s reference model is formed by the collection of CORBA services . A CORBA service is best thought of as being general purpose and independent of the application for which CORBA is being used . As such , CORBA services strongly resemble the types of services commonly provided by operating systems . There is a whole list of services specified for CORBA , as shown in Fig . 9-3 . Unfortunately , it is not always possible to draw a clear line between the different services , as they often have overlapping functionality . Let us briefly describe each service so that we can later make a better comparison to services as offered by DCOM and Globe .
The collection service provides the means to group objects into lists , queues , stacks , sets , and so on . Depending on the nature of the group , various access mechanisms are offered . For example , lists can be inspected elementwise through what is generally referred to as an iterator . There are also facilities to select objects by specifying a key value . In a sense , the collection service comes close to what is generally offered by class libraries for object-oriented programming languages .
There is also a separate query service that provides the means to construct collections of objects that can be queried using a declarative query language . A query may return a reference to an object or to a collection of objects . The query service augments the collection service with advanced queries . It differs from the collection service in that the latter offers various types of collections .
There is also a concurrency control service . It offers advanced locking mechanisms by which clients can access shared objects . This service can be used to implement transactions , which are offered by a separate service . The