----------------------------------
Known problem with OMG IDL unions.
----------------------------------

An internal problem in the CORBA::Request::invoke operation of
VisiBroker 3.3 does not allow a script to send or receive an union
with a discriminator which denotes a no declared field, e.g.

  union U switch(long)
  {
    case 1: long value;
  };

It is possible to send or receive a value equals to U(1,1).
It is impossible to send or receive a value equals to U(0):
VisiBroker 3.3 throws a CORBA::BAD_PARAM exception.

This problem doesn't obscur on other ORBs like ORBacus! 

--------------------------------------
Using the VisiBroker location service.
--------------------------------------

If you want to use the Visibroker Location Service, i.e. the
service provided by OSAgent daemons which allows one to locate 
CORBA objects, do the following:

unix> ir_load /the_path_to_the_Visibroker_distribution/idl/locate.idl
unix> cssh
CorbaScript 1.3.3 (Feb 15 2000) for Visibroker for C++
Copyright 1996-2000 LIFL, France
>>>
>>> ls = CORBA.ORB.resolve_initial_references("LocationService")
>>> ls._type
< OMG-IDL interface ObjLocation::Agent {
     HostnameSeq all_agent_locations () raises(ObjLocation::Fail);
     RepositoryIdSeq all_repository_ids () raises(ObjLocation::Fail);
     ObjSeqSeq all_available () raises(ObjLocation::Fail);
     ObjSeq all_instances (in string repository_id) raises(ObjLocation::Fail);
     ObjSeq all_replica (in string repository_id, in string instance_name) raises(ObjLocation::Fail);
     DescSeqSeq all_available_descs () raises(ObjLocation::Fail);
     DescSeq all_instances_descs (in string repository_id) raises(ObjLocation::Fail);
     DescSeq all_replica_descs (in string repository_id, in string instance_name) raises(ObjLocation::Fail);
     void reg_trigger (in TriggerDesc desc, in TriggerHandler handler) raises(ObjLocation::Fail);
     void unreg_trigger (in TriggerDesc desc, in TriggerHandler handler) raises(ObjLocation::Fail);
     attribute boolean willRefreshOADs;
}; >
>>>
>>> ls.all_agent_locations()
...
>>> ls.all_repository_ids()
...

Now, you could invoke operations on the Location Service.
