Using the Implementation Repository









Introduction



The Implementation Repository is the CORBA service which manages the object implementations. The orb needs it to know how to start up an object which implementation is not yet active.
The IDL definition is specific to each orb implementation. For OpenFusion RTORB Ada Edition, it is the following:

#include "Corba.idl"
module CORBA
{
#pragma OrbRiver_Directive "Object_Id" "ImplementationRepository"
    interface ImplementationDef
    {
        // To startup an implementation of a shared server or
        // to startup a new instance of an unshared server
        Object Create_Object ();

        // To get the name (ObjectId) of the implementation
        // (Available since OpenFusion RTORB Ada Edition 1.2)
        string Name () ;

        // To get the path of the implementation executable
        string Server () ;

        // To get the host where the implementation runs
        string Host () ;

        // To get the activation policy of the implementation
        Activation_Policy Activation () ;

        // To get the InterfaceDef of the root object of the implementation
        Object Root_Interface ();
    };

    interface Implementation_Repository
    {
        typedef sequence <ImplementationDef> Implementations ;

        // To add a new implementation and get its reference
        // Root_Interface must be an InterfaceDef object reference
        void Register
                ( in ObjectId Name,
                  in string Server, // full pathname of the executable
                  in string Host, // where it runs
                  in Activation_Policy Activation,
                  in Object Root_Interface, // InterfaceDef of the root object
                  out ImplementationDef Impl) ;

        // To get the reference of an existing implementation
        // If Host is empty, the ORB host is preferred
        // If Server is not a full pathname, the first match is chosen
        void Get_Implementation
                ( in ObjectId Name,
                  in string Server,
                  in string Host,
                  out ImplementationDef Impl ) ;

        // To get the list of references of the implementations
        // of the given interface
        // Implements must be an InterfaceDef object reference
        void Get_Implementations
                ( in Object Implements,
                  out Implementations Impl_List) ;

        // To get the list of all the references of the implementations
        // stored in the Implementation Repository
        // (Available since OpenFusion RTORB Ada Edition 1.2)
        void Get_All_Implementations
                ( out Implementations Impl_List) ;

        // To remove an implementation from the Implementation Repository
        // (Available since OpenFusion RTORB Ada Edition 1.2)
        void remove (inout ImplementationDef Impl) ;
    };
};


It is possible to store several implementations under the same name, but they must either have a different executable pathname or run on a different host.
The Implementation Repository is an initial service, its object id is "ImplementationRepository".







Limitations



In OpenFusion RTORB Ada Edition versions 1.0 and 1.1, full edition of implementations was not possible.







Persistence



The Implementation Repository objects persistent state is saved in the file $ORBRIVER_DIR/etc/ImplRep_<Id> where <Id> is the ORB identity of the containing orb. This file is only updated when the orb is cleanly stopped (see Stopping orbriver with stop_orb).







Editing with impl_editor



impl_editor is the tool to register implementations (CORBA services) inside the Implementation Repository of a given orb. This means:

Its only switches are the orb connection switches (see Client and Service switches). A client needs that the orb it connects to knows the implementation of the services this client needs to start. The registered implementation is permanent (reloaded automatically when the orbriver daemon starts) if the orbriver daemon has been stopped by "stop_orb".

impl_editor prompts for commands. The prompt is "-> ".
Example:
computer prompt > $ORBRIVER_DIR/bin/impl_editor -ORBName OrbRiver_1
- >

The commands are not case sensitive and some have a short alias.
The possible commands are:







Email Micro Focus support



Copyright Micro Focus 2002-2014. All rights reserved.