TAO can be configured in several ways. Certain components in TAO, such as the ORB Core or Object Adapter, can be tuned by users by providing value for options or environment variables to them. These options are commonly specified as (1) environment variables or (2) strings passed on the command-line. Command-line options and environment variables to control global ORB features, such as the IOR format or ORB's bootstrapping methods. They are generally passed to component initialization methods for consumption.
In addition, options in
svc.conf
file provide a mechanism to fine-tune internal components in TAO that are specific to particular configurations. If your program use-cases have particular characteristics, you can use thesvc.conf
file to customize your programs and use various optimization provided by TAO . However, asvc.conf
file is not required to run TAO programs.Programmer's Note: the internal structure for options is the traditional
argc
/argv
vector of strings style popularized by C and Unix. By convention, an initialization method will consume, i.e., remove from the vector, any options that it recognizes.
Environment Variable Description NameServiceIOR
whichSpecifies which IOR the Naming Service is listening on. NameServicePort
whichSpecifies which port the Naming Service is listening on for multicast requests. TradingServiceIOR
whichSpecifies which IOR the Trading Service is listening on. TradingServicePort
whichSpecifies which port the Trading Service is listening on for multicast requests. ImplRepoServiceIOR
whichSpecifies the IOR of an Implementation Repository. ImplRepoServicePort
whichSpecifies which port the Implementation Repository is listening on for multicast requests.
The following components can be tuned via options:
Typically, CORBA::ORB options are set via command line parameters that are eventually passed to CORBA::ORB_init (), while the rest of the options are set via the service configurator (svc.conf) file.
CORBA::ORB
Note:
-ORBGlobalCollocation
flag has been merged with-ORBCollocation
.
Option Description -ORBSvcConf
config file nameSpecifies the name of the file from which it will read dynamic service configuration directives ala ACE's Service Configurator. By default, a service configurator-based application will look for a file named "svc.conf" in the current directory. -ORBSvcConfDirective
directivestringSpecifies a service configuration directive, which is passed to ACE's Service Configurator. -ORBDaemon
Specifies that the ORB should daemonize itself. -ORBDebug
Turns on the output of debugging messages within ACE's Service Configurator componentry. -ORBDebugLevel
levelControl the level of debugging in the ORB. Higher number produce more output (try 10). -ORBEndpoint
endpointTells the ORB to listen for requests on the interface specified by endpoint. Endpoints are specified using a URL style format. An endpoint has the form: whereprotocol://V.v@addr1,...,W.w@addrN
V.v
andW.w
are optional protcol versions for each address. An example of an IIOP endpoint is:Sets of endpoints may be specified using multipleiiop://hostname:port
-ORBEndpoint
options or by delimiting endpoints with a semi-colon (;). For example,is equivalent to:-ORBEndpoint iiop://localhost:9999 -ORBEndpoint uiop:///tmp/mylocalsock
Notice the single quotes (') in the latter option specification. Single quotes are needed to prevent the shell from interpreting text after the semi-colon as another command to run.-ORBEndpoint 'iiop://localhost:9999;uiop:///tmp/mylocalsock'
If an endpoint is specified without an
addr
such as the following:then a default endpoint will be created for the specified protocol.-ORBEndpoint uiop://
This is a server side option.
-ORBHost
hostnameTells the ORB to listen for requests on the interface associated with the host named hostname. This option is valid only for IIOP endpoints.
NOTE: This option has been superseded by the-ORBEndpoint
option. It will not be supported in the future.-ORBPort
portspecTells the ORB to listen for requests on the port specified by portspec. If not specified, the OS gets to choose a random empty port. This option is valid only for IIOP endpoints.
NOTE: This option has been superseded by the-ORBEndpoint
option. It will not be supported in the future.-ORBObjRefStyle
whichSpecifies the user-visible style of object references. The range of values is IOR
(default), which is the traditional nonsensical object reference, orURL
, which looks more like a URL.-ORBRcvSock
receive buffer sizeSpecify the size of the socket receive buffer as a positive, non-zero integer. If not specified, the ACE_DEFAULT_MAX_SOCKET_BUFSIZ default is used. -ORBSndSock
send buffer sizeSpecify the size of the socket send buffer as a positive, non-zero integer. If not specified, the ACE_DEFAULT_MAX_SOCKET_BUFSIZ default is used. -ORBNodelay
boolean (0|1)Enable or disable the TCP_NODELAY option. By default, TCP_NODELAY is enabled. -ORBNameServicePort
portspecSpecifies which port the Naming Service is listening on for multicast requests. By default, TAO_DEFAULT_NAME_SERVICE_REQUEST_PORT, which is 10013 is used. -ORBNameServiceIOR
iorSpecifies the IOR for the Naming Service. Note, this option is deprecated since its functionality can be achieved with the standard -ORBInitRef
option defined by the Interoperable Naming Service.-ORBTradingServicePort
portspecSpecifies to which port the Trading Service is listening on for multicast requests. By default, TAO_DEFAULT_TRADING_SERVICE_REQUEST_PORT which is 10016 is used. -ORBTradingServiceIOR
iorSpecifies the IOR for the Trading Service. Note, this option is deprecated since its functionality can be achieved with the standard -ORBInitRef
option defined by the Interoperable Naming Service.-ORBImplRepoServicePort
portspecSpecifies to which port the Implementation Repository is listening on for multicast requests. By default, TAO_DEFAULT_IMPLREPO_SERVER_REQUEST_PORT which is 10018 is to be used. -ORBImplRepoServiceIOR
iorSpecifies the IOR for the Implementation Repository. Note, this option is deprecated since its functionality can be achieved with the standard -ORBInitRef
option defined by the Interoperable Naming Service.-ORBCollocation
yes/global/per-orb/noSpecifies the use of collocation object optimization. If global or yes is specified, objects in the same process will be treated as collocated. If per-orb is specified, only objects in the same ORB are treated as collocated. When no is specified, no objects are treated as collocated. Default is global. -ORBCollocationStrategy
thru_poa/directSpecifies what kind of collocated object to use. If the thru_poa strategy is used, TAO uses the collocation object implementation that respects POA's current state and policies. When using the direct strategy, method invocations on collocated objects become direct calls to servant without checking POA's status. Default is thru_poa. -ORBPreconnect
endpointPre-establishes a blocking connection to each listed endpoint. If a connection cannot be established the failed preconnection will be ignored and the next preconnection in the list will be processed. Successful and unsuccessful preconnections will be displayed if a debugging level greater than or equal to one is specified by using the -ORBDebugLevel
option. Listing the same combination multiple times will properly establish multiple connections to that endpoint. The-ORBPreconnect
option uses the same endpoint format as the-ORBEndpoint
option. Specifying IIOP endpoints using a comma delimited list of host:port pairs is deprecated and will not be supported in the future.This is a client-side option.
-ORBCDRTradeoff
maxsizeControl the strategy to tradeoff between copy vs. no copy marshalling of octet sequences. If an octet sequence is smaller than maxsize and the current message block contains enough space for it the octet sequence is copied instead of appended to the CDR stream. By default, ACE_DEFAULT_CDR_MEMORY_TRADEOFF is used. -ORBSkipServiceConfigOpen
Do not call the ACE_Service_Config::open
method, which is necessary if the ORB is being linked dynamically via the ACE Service Configurator which is not reentrant. Default is-ORBGIOPlite
Enable a lightweight version of the GIOP protocol. This protocol removes some of the fields in the GIOP and the Request header. It only works on homogeneous environments.. -ORBDottedDecimalAddresses
boolean (0|1)Use the dotted decimal notation for addresses. By default domain names are used in IORs. -ORBInitRef
ObjectId=IORAllows specification of an arbitrary object reference for an initial service. The IOR could be in any one of the following formats : OMG IOR, URL, iioploc (including uioploc) or file. iioploc is a multiple end-point IOR understood by the string_to_object () method and used as a boot-strapping mechanism by the resolve_initial_references () method. The mappings specified through this argument override the orb-install-time defaults. The file://pathname interprets the contents of the pathname file as an object reference in any of the above formats. -ORBDefaultInitRef
IOR prefixThis argument allows resolution of initial references not explicitly specified with -ORBInitRef. It requires a URL prefix that, after appending a slash '/' ('|' for UIOP pluggable protocol) and a simple object key, forms a new URL to identify an initial object reference. The URL prefix format currently supported is iioploc. -ORBStdProfileComponents
boolean (0|1)If 0 then the ORB does not generate the OMG standardized profile components, such as the ORB type and code sets. Notice that the presence of this components is optional in GIOP 1.1 The default value is controlled by a compile-time flag (check orbconf.h). -ORBResources
whichControl the use of thread specific resources in the ORB. If (which = global
) then the same set of resources are shared by all the threads that use that ORB. If (which =tss
) then each that uses that ORB gets its own set of resources. Currently the resources are limited to the reactor.
TAO_Resource_Factory
Note:
-ORBReactorLock
flag has been superseded by-ORBReactorType
.
TAO_Default_Server_Strategy_Factory
Note:
-ORBDemuxStrategy
flag has been changed to-ORBSystemidPolicyDemuxStrategy
and-ORBUseridPolicyDemuxStrategy
.Note:
-ORBTableSize
flag has been changed to-ORBActiveObjectMapSize
.
Option Description -ORBConcurrency
whichSpecify which concurrency strategy to use. Range of values is reactive
for a purely Reactor-driven concurrency strategy orthread-per-connection
for creating a new thread to service each connection. The default is reactive.TAO also supports the thread-pool concurrency model but this is implemented by the user, creating multiple threads that call
ORB::run()
and using the-ORBReactorType tp
option.-ORBThreadPerConnectionTimeout
millisecondsIn many platforms it is impossible to interrupt the server threads created by the thread-per-connection
model. This is because these threads are blocked inread()
operations (and not inselect()
). As a workaround, the server threads periodically poll the ORB to find out if they should shutdown. This option controls the period of the polling, expressed in milliseconds. Applications that do not shutdown, or that can otherwise ensure that no server threads will be running at shutdown (for example if all the clients terminate before the server) can disable the polling using the magic valueINFINITE
.If the option is not provided then the ORB uses the compile time flag
TAO_DEFAULT_THREAD_PER_CONNECTION_TIMEOUT
, this flag also expresses the time in milliseconds (as a string constant) and the magic value"INFINITE"
can be used to disable polling entirely. This yields a slight performance improvement (around 1%).-ORBActiveObjectMapSize
active object map sizeSpecify the size of the active object map. If not specified, the default value is 64. -ORBUseridPolicyDemuxStrategy
user id policy based demultiplexing strategySpecify the demultiplexing lookup strategy to be used with the user id policy. The demultiplexing strategy can be one of dynamic
orlinear
. This option defaults to use thedynamic
strategy.-ORBSystemidPolicyDemuxStrategy
system id policy based demultiplexing strategySpecify the demultiplexing lookup strategy to be used with the system id policy. The demultiplexing strategy can be one of dynamic
,linear
, oractive
. This option defaults to use theactive
strategy.-ORBUniqueidPolicyReverseDemuxStrategy
unique id policy based reverse demultiplexing strategySpecify the reverse demultiplexing lookup strategy to be used with the unique id policy. The reverse demultiplexing strategy can be one of dynamic
orlinear
. This option defaults to use thedynamic
strategy.-ORBAllowReactivationOfSystemids
allows reactivation of system idsSpecify whether system ids can be reactivated, i.e., once an id that was generated by the system has be deactivated, will the user reactivate a new servant using the old id. If the user is not going to use this feature, the IORs can be shortened, an extra comparison in the critical upcall path removed, and some memory on the server side can be saved. The ORBAllowReactivationOfSystemids
can be0
or1
. This option defaults to1
.-ORBActiveHintInIds
adds an active hint in idsSpecify whether an active hint should be added to ids. With active hints, ids can be found quickly. However, they lead to larger IORs. Note that this option is disregarded -ORBAllowReactivationOfSystemids
is set to0
. The -ORBActiveHintInIds can be0
or1
. This option defaults to1
.-ORBPoaMapSize
poa map sizeSpecify the size of the poa map. If not specified, the default value is 24. -ORBPersiententidPolicyDemuxStrategy
persistent id policy based demultiplexing strategySpecify the demultiplexing lookup strategy to be used with the persistent id policy. The demultiplexing strategy can be one of dynamic
orlinear
. This option defaults to use thedynamic
strategy.-ORBTransientidPolicyDemuxStrategy
transient id policy based demultiplexing strategySpecify the demultiplexing lookup strategy to be used with the transient id policy. The demultiplexing strategy can be one of dynamic
,linear
, oractive
. This option defaults to use theactive
strategy.-ORBActiveHintInPOANames
adds an active hint in poa namesSpecify whether an active hint should be added to poa names. With active hints, poa names can be found quickly. However, they lead to larger IORs. The -ORBActiveHintInPOANames can be 0
or1
. This option defaults to1
.-ORBThreadFlags
thread flagsSpecify the flags used for thread creation. Flags can be any logical-OR combination of THR_DETACHED
,THR_BOUND
,THR_NEW_LWP
,THE_SUSPENDED
. The default isTHR_BOUND | THR_DETACHED
.-ORBPOALock
lock typeSpecify the type of lock to be used for POA accesses. Possible values for lock type are thread
, which specifies that an inter-thread mutex is used to guarantee exclusive access, andnull
, which specifies that no locking be performed. The default isthread
.-ORBConnectorLock
lock typeThis option has been moved to the client strategy factory.
TAO_Default_Client_Strategy_Factory
Option Description -ORBProfileLock
whichSpecify the kind of synchronization primitive for the Profiles. Default is thread
, which means that a regular thread mutex is used. The second option isnull
, which means a null lock is used. This makes sense in case of optimizations and is allowed when no forwarding is used or only a single threaded client.-ORBClientConnectionHandler
MT / ST / RWST means use the single-threaded client connection handler, i.e., the leader follower model will not be used. However, ST does support nested upcalls and handling of new requests while waiting for the reply from a server. MT means use the multi-threaded client connection handler which uses the leader follower model. This model allows the use of multiple threads with a single Reactor.
RW selects a strategy that simply blocks in recv() when waiting for a response from the server instead of waiting in the Reactor. The RW strategy only works when the application does not have to worry about new request showing up when waiting for a response. Therefore, this strategy is appropriate only for "pure" clients. Note that applications with nested upcalls are not "pure" clients. Also note that this strategy will only effect two way calls, since there is no waiting for one way calls. This strategy can also be used in an application that is both a client and a server if the server side is handled by a separate thread and the client threads are "pure" clients.
Default for this option is MT.
-ORBTransportMuxStrategy
EXCLUSIVE / MUXEDEXCLUSIVE means that the Transport does not multiplex requests on a connection. At a time, there can be only one request pending on a connection. MUXED means that Transport multiplexes more than one request at the same time on a connection. This is very important for getting the Asynchronous Method Invocation model to work. This is not implemented yet.
Default for this option is EXCLUSIVE.
-ORBConnectorLock
lock typeSpecify the type of lock to be used by the connector. Possible values for lock type are thread
, which specifies that an inter-thread mutex is used to guarantee exclusive access, andnull
, which specifies that no locking be performed. The default isthread
.
Back to the TAO components documentation.