The following changes or enhancements have been made to the OpenFusion TAO 1.5 distribution.
-Sal
option has been added to make it possible to suppress the generation of Any operations for local interfaces (Any operations are generated by default).-ORBAMICollocation 1|0
option has been added (TAO#758).
This option specifies what happens when making collocated AMI invocations. When 1 (default), an AMI call will be done on a collocated servant and the client thread will be used to invoke the servant; when 0, the collocated call will be converted to a remote call so that a different thread could be used to execute the servant.
--ignore-failures [timeout_in_milliseconds]
option has been added to DAnCE (TAO#731).
When DAnCE is started with this option, it ignores COMM_FAILURE, TRANSIENT, NO_RESPONSE, OBJ_ADAPTER, OBJECT_NOT_EXIST and AlreadyConnected exceptions in NodeApplication_Impl::finishLaunch
, when it does a remote call to CCMObject
. If timeout_in_milliseconds
is specified, it ignores TIMEOUT exceptions as well if remote requests for the object time out after the time specified.
-ORBIPHopLimit hops
has been added.
wrapper_macros.GNU
has been enhanced so that an alternate file location
can be specified for the platform macros file as the variable
alternate_platform_macros
. This allows developers to build their
application with different flags to the actual TAO distribution (TAO#627).
Previously, PortableGroup, RT CORBA and the CSD Framework could not be used
together in one process because they use their own implementations of object adapters,
which are not compatible. This was because POA factories and object adapters were
created as a singleton, therefore they were the same for all ORBs in a single process.
Now, a POA factory is set for every ORB in a process, so that the PortableGroup,
RT CORBA and CSD Framework libraries can be used in a single process but as if they
were in different processes.
A further restriction from the CORBA specification states that for every ORB in a
process, all registered ORB initializers must be used. These ORB initializers set
the POA factory they need in every orb that is created. The following
ORB_init
arguments have been added to disable the PortableGroup,
RT CORBA and CSD framework feature:
-PGDisable
(PortableGroup)-RTDisable
(RT CORBA)-CSDDisable
(CSD Framework)-PGDisable
and -RTDisable
to ORB_init
-PGDisable
and -CSDDisable
to ORB_init
-CSDDisable
and -RTDisable
to ORB_init
The following code fragment shows the creation of the RT ORB:
const int rt_specific_args = 2;
int rt_argc = argc + rt_specific_args;
char **rt_argv = new char * [rt_argc];
ACE_Auto_Array_Ptr
rt_argv[0] = argv[0];
rt_argv[1] = "-CSDDisable";
rt_argv[2] = "-PGDisable";
for (int i = rt_specific_args + 1; i < rt_argc; ++i)
{
rt_argv[i] = argv[i - rt_specific_args];
}
CORBA::ORB_var rt_orb = CORBA::ORB_init (rt_argc, rt_argv, "RT_ORB");
TAO_POA_Acceptor_Filter
in the TAO/tao/POAFiltering
directory has been added. This class provides an implementation of the
TAO_Acceptor_Filter
class and checks for the POA name in a map
populated from the -ORBPOAEndpoints
and -ORBListenEndpoints
configuration arguments.
For example:
server -ORBListenEndpoints iiop://:23232,:23233,:23234
-ORBUsePOAEndpointFilter 1
-ORBPOAEndpoints poaA=iiop://:23232
-ORBPOAEndpoints poaB=iiop://:23233,:23234
The -ORBUsePOAEndpointFilter 1
argument specifies that the
TAO_POA_Acceptor_Filter
implementation class should be used.
poaA will encode port 23232 in its references.
poaB will encode port 23233 and 23234 in its references.
poaX (and the root poa) will encode port 23232, 23233 and 23234 in their
references - by default, all the ports passed to -ORBListenEndpoints
since poaX was not specified as a -ORBPOAEndpoints
argument.