The LispWorks ORB is not supplied with an interface repository or a naming service, but it is possible to configure the ORB to present these services in response to calls of op:list_initial_services
and op:resolve_initial_references
. Configuration can either be via initial references or stored persistently.
The ORB initargs -ORBInitRef
and -ORBDefaultInitRef
are processed as defined by the CORBA specification, available from OMG.
For example, with an application lwcorba
:
lwcorba -ORBInitRef NameService=corbaloc::www.wherever.com:80/Dev/NameService
will configure the name service to contact the machine specified by the corbaloc
URL.
The function corba:set-pluggable-module-details
can be used for this purpose. For example,
(corba:set-pluggable-module-details "InterfaceRepository"
:ior-string "IOR:000000000000002149444c...")
(corba:set-pluggable-module-details "NameService"
:ior-string "IOR:000000000000002149444c...")
would direct the ORB to use the given IOR-described CORBA object as an interface repository or name service, respectively. Values set in this manner are persistent. The code
(corba:get-pluggable-module-details orb "InterfaceRepository"
:ior-string)
returns a list of two values. The first is the object reference of the given service if it is contactable (nil if it is not). The second is the value that has been set using corba:set-pluggable-module-details
. Note the the standardized function op:resolve_initial_references
should be used in application code to obtain the reference, not corba:get-pluggable-module-details
.
Type information corresponding to IDL parsed by the IDL compiler is not added to the interface repository until the information is needed in response to a call to op:get_interface
from a client.
Developing Component Software with CORBA - 14 Feb 2015