summaryrefslogtreecommitdiff
path: root/TAO/docs/Options.html
blob: 0ecee64d661e7222c68660ea5e891f69aca998f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
<HTML>
<HEAD>
<!-- $Id$ -->
<META NAME="GENERATOR" CONTENT="Adobe PageMill 2.0 Mac">
<TITLE>Options for TAO Components</TITLE>
</HEAD>

<BODY text = "#000000"
link="#000fff"
vlink="#ff0f0f"
bgcolor="#ffffff">

<HR><P>
<H3 ALIGN=CENTER>Options for TAO Components</H3>

<H3>Overview</H3>
<blockquote>

<p>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. <P>

In addition, options in <code>svc.conf</code> 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 the <code>svc.conf</code> file to
customize your programs and use various optimization provided by TAO .
However, a <code>svc.conf</code> file is not required to run TAO
programs. </p>

<P><EM>Programmer's Note:</EM> the internal structure for options is
the traditional <CODE>argc</CODE>/<CODE>argv</CODE> vector of strings
style popularized by C and Unix.  By convention, an initialization
method will consume, <EM>i.e.</EM>, remove from the vector, any
options that it recognizes.</P> </blockquote>

<HR><P>
<H3><A NAME="ev">Environment Variables</A></H3>

The following environment variables are supported by TAO:

<BLOCKQUOTE>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0" >
  <TR>
    <TH>Environment Variable</TH>
    <TH>Description</TH>
  </TR>
  <TR>
    <TD><CODE>NameServiceIOR</CODE> <EM>which</EM></TD>
    <TD>
        Specifies which IOR the Naming Service is listening on.
    </TD>
  </TR>
  <TR>
    <TD><CODE>NameServicePort</CODE> <EM>which</EM></TD>
    <TD>
        Specifies which port the Naming Service is listening on for multicast
        requests.
    </TD>
  </TR>
  <TR>
    <TD><CODE>TradingServiceIOR</CODE> <EM>which</EM></TD>
    <TD>
        Specifies which IOR the Trading Service is listening on.
    </TD>
  </TR>
  <TR>
    <TD><CODE>TradingServicePort</CODE> <EM>which</EM></TD>
    <TD>
        Specifies which port the Trading Service is listening on for multicast
        requests.
    </TD>
  </TR>
  <TR>
    <TD><CODE>ImplRepoServiceIOR</CODE> <EM>which</EM></TD>
    <TD>
        Specifies the IOR of an Implementation Repository.
    </TD>
  </TR>
  <TR>
    <TD><CODE>ImplRepoServicePort</CODE> <EM>which</EM></TD>
    <TD>
        Specifies which port the Implementation Repository is listening on for
        multicast requests.
    </TD>
  </TR>
</TABLE>
</P>
</BLOCKQUOTE>

<HR><P>

<H3>Types of Options</H3>

<blockquote>
<P>The following components can be tuned via options:</P>

<UL>
  <LI><A HREF="#ORB"><CODE>CORBA::ORB</CODE></A>
  <LI><A HREF="#DefaultResourceFactory"><CODE>TAO_Default_Resource_Factory</CODE></A>
  <LI><A HREF="#AdvancedResourceFactory"><CODE>TAO_Advanced_Resource_Factory</CODE></A>
  <LI><A HREF="#DefaultServer"><CODE>TAO_Default_Server_Strategy_Factory</CODE></A>
  <LI><A HREF="#DefaultClient" TARGET="_top"><CODE>TAO_Default_Client_Strategy_Factory</CODE></A>
  <LI><A HREF="#RT_ORB_Loader"><CODE>RT_ORB_Loader</CODE></A>
</UL>

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.

</blockquote>

<blockquote>
<H3><A NAME="ORB"></A><CODE>CORBA::ORB</CODE></H3>

<p><em>Note:</em> <code>-ORBGlobalCollocation</code> flag has been
merged with <a href="#-ORBCollocation"><code>-ORBCollocation</code></a>.

<blockquote>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING= "0">
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
  <!-- <TR NAME="ORBsvcconf"> -->
  <tr>
    <TD><CODE><A NAME="-ORBSvcConf">-ORBSvcConf</A></CODE> <EM>config filename</EM></TD>
    <TD>Specifies the name of the file from which it will read dynamic service configuration
        directives <EM>ala</EM> ACE's Service Configurator. By
        default, a service configurator-based application will look
        for a file named "svc.conf" in the current directory.</TD>
  </TR>
  <!-- <TR NAME="ORBsvcconf"> -->
  <tr>
    <TD><CODE>-ORBSvcConfDirective</CODE> <EM>directivestring</EM></TD>
    <TD>Specifies a service configuration directive, which is passed to ACE's Service Configurator.</TD>
  </TR>
  <tr>
    <TD><CODE><A
    NAME="-ORBServiceConfigLoggerKey">-ORBServiceConfigLoggerKey</A></CODE>
    <EM>logger key</EM></TD>
    <TD>Set the logger key in the <CODE>ACE_Service_Config</CODE>
    framework.  Equivalent to the <CODE>-k</CODE> option on the ACE
    service configurator class.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBDaemon</CODE></TD>
    <TD>Specifies that the ORB should <I>daemonize</I> itself.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBDebug</CODE></TD>
    <TD>Turns on the output of debugging messages within ACE's Service Configurator
        componentry.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBDebugLevel</CODE> <EM>level</EM></TD>
    <TD>Control the level of debugging in the ORB. Higher number produce
        more output (try 10).
    </TD>
  </TR>
  <TR>
    <TD><CODE><A HREF="ORBEndpoint.html">-ORBEndpoint</A></CODE>
              <EM>endpoint</EM></TD>
    <TD><a name="-ORBEndpoint"></a>Tells the ORB to listen for requests on the
        interface specified by <I><EM>endpoint</EM></I>.  Endpoints are
        specified using a URL style format.  An endpoint has the form:
        <blockquote><CODE>
        protocol://V.v@addr1,...,W.w@addrN
        </CODE></blockquote>
        where <CODE>V.v</CODE> and <CODE>W.w</CODE> are optional protcol versions for
        each address.  An example of an IIOP endpoint is:
        <blockquote><CODE>
        iiop://<I><EM>hostname</EM></I>:<I><EM>port</EM></I>
        </CODE></blockquote>
        Sets of endpoints may be specified using multiple <CODE>-ORBEndpoint</CODE>
        options or by delimiting endpoints with a semi-colon (;).  For example,
        <blockquote><CODE>
        -ORBEndpoint iiop://localhost:9999 -ORBEndpoint uiop:///tmp/mylocalsock -ORBEndpoint shmiop://10002
        </CODE></blockquote>
        is equivalent to:
        <blockquote><CODE>
        -ORBEndpoint 'iiop://localhost:9999;uiop:///tmp/mylocalsock;shmiop://10002'
        </CODE></blockquote>
        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.<P>
        If an endpoint is specified without an <CODE>addr</CODE> such as the following:
        <blockquote><CODE>
        -ORBEndpoint uiop:// -ORBEndpoint shmiop://
        </CODE></blockquote>
        then a default endpoint will be created for the specified protocol.
        <P>
        This is a server side option.
    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBObjRefStyle</CODE> <EM>which</EM></TD>
    <TD>Specifies the user-visible style of object references. The range of values
        is <CODE>IOR</CODE> (default), which is the traditional nonsensical object reference,
        or <CODE>URL</CODE>, which looks more like a URL.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBRcvSock</CODE> <EM>receive buffer size</EM></TD>
    <TD><A NAME="-ORBRcvSock"></a>Specify 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.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBSndSock</CODE> <EM>send buffer size</EM></TD>
    <TD><A NAME="-ORBSndSock"></a>Specify 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.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBNodelay</CODE> <EM>boolean (0|1)</EM></TD>
    <TD><A NAME="-ORBNodelay"></a>Enable or disable the TCP_NODELAY
        option. By default, TCP_NODELAY is enabled.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBNameServicePort</CODE> <EM>portspec</EM></TD>
    <TD>Specifies which port the Naming Service is listening on for
        multicast requests. By default,
        TAO_DEFAULT_NAME_SERVICE_REQUEST_PORT, which is 10013 is used.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBTradingServicePort</CODE> <EM>portspec</EM></TD>
    <TD>Specifies 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.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBImplRepoServicePort</CODE> <EM>portspec</EM></TD>
    <TD>Specifies 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.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBMulticastDiscoveryEndpoint</CODE> <EM>end_point</EM></TD>
    <TD>Specifies the endpoint that should be used for locating the
        Naming Service through multicast. <EM>end_point</EM> is of the
        form ip-number:port-number (e.g., "tango.cs.wustl.edu:1234" or
        "128.252.166.57:1234"). If there is no ':' in the end_point it
        is assumed to be a port number, with the IP address being INADDR_ANY.
  </TR>
  <TR>
    <TD><CODE>-ORBCollocation</CODE> <EM>global/per-orb/no</EM></TD>
    <TD><a name="-ORBCollocation"></a>Specifies the use of collocation
        object optimization.  If <em>global</em> is
        specified, objects in the same process will be treated as collocated.
        If <em>per-orb</em> is specified, only objects in the same ORB are
        treated as collocated.  When <em>no</em> is specified, no objects are
        treated as collocated.   Default is global.</TD>
  </TR>
  <TR>
    <TD>
        <CODE>-ORBCollocationStrategy</CODE> <EM>thru_poa/direct</EM>
    </TD>
    <TD>
        Specifies what kind of collocated object to use.  If the
        <em>thru_poa</em> strategy is used, TAO uses the collocation
        object implementation that respects POA's current state and
        policies.   When using the <em>direct</em> strategy, method
        invocations on collocated objects become direct calls to servant
        without checking POA's status (which translates to better
        performance.)  Notice that the interfaces that you wish to use
        direct collocation with must be compiled with <code>
        <a href="compiler.html#collocation-stubs">-Gd</a>
        </code>. Default is thru_poa.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBPreconnect</CODE> <EM>endpoint</EM></TD>
    <TD><A name="-ORBPreconnect"></a>Pre-establishes a blocking connection to
        each listed <EM>endpoint</EM>. 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 <CODE>-ORBDebugLevel</CODE> option.  Listing the same combination
        multiple times will properly establish multiple connections to that endpoint.
        The <CODE>-ORBPreconnect</CODE> option uses the same endpoint format as the
        <CODE>-ORBEndpoint</CODE> option.
        <P>
        This is a client-side option.
        <P>
        <FONT COLOR=RED>-ORBPreconnect is <STRONG>deprecated</STRONG>.
        This option will be removed in the near future.  The Real-Time CORBA standard
        <CODE>validate_connection()</CODE> method should be used
        instead.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBCDRTradeoff</CODE> <EM>maxsize</EM></TD>
    <TD><A name="-ORBCDRTradeoff"></a>Control the strategy to tradeoff
        between copy vs. no copy marshalling of octet sequences.
        If an octet sequence is smaller than <EM>maxsize</EM> 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.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBSkipServiceConfigOpen</CODE></TD>
    <TD><A name="-ORBSkipServiceConfigOpen"></a>Do not call the
<code>ACE_Service_Config::open</code> method when initializing the
ORB.  This option is generally only useful when dynamically loading
the ORB.
     <P>
      <FONT COLOR=RED>This option is <STRONG>deprecated</STRONG>.  It
        is no longer needed since the Service Configurator is now
        reentrant and thread-safe.</FONT>

   </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBGIOPlite</CODE></TD>
    <TD><A name="-ORBGIOPlite"></a> This option has been
        deprecated. Please see
        <i>$TAO_ROOT/docs/pluggable_messaging.html </i> for more details. </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBDottedDecimalAddresses</CODE> <EM>boolean (0|1)</EM></TD>
    <TD><A name="-ORBDottedDecimalAddresses"></a> Use the dotted decimal
        notation for addresses. By default domain names are used in IORs.</TD>
  </TR>
  <TR>
    <TD><CODE>-ORBInitRef</CODE> <EM>ObjectId=IOR</EM></TD>
    <TD><A name="-ORBInitRef"></a> Allows specification of an arbitrary
        object reference for an initial service. The IOR could be in any
        one of the following formats : OMG IOR, URL, corbaloc (including
        uioploc) or file. corbaloc 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://<I>pathname</I> interprets the contents of the
        <I>pathname</I> file as an object reference in any of the above
        formats.
    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBDefaultInitRef</CODE> <EM>IOR prefix</EM></TD>
    <TD><A name="-ORBDefaultInitRef"></a> This 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
        corbaloc.
    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBStdProfileComponents</CODE> <EM>boolean (0|1)</EM></TD>
    <TD><A name="-ORBStdProfileComponents"></a> If <EM>0</EM> 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).</TD>
  </TR>

  <TR>
    <TD><CODE>-ORBResources</CODE> <EM>which</EM></TD>
    <TD><A name=-ORBResources>Control the use of thread specific resources
        in the ORB.
        If (<em>which</em> = <code>global</code>) then the
        same set of resources are shared by all the threads
        that use that ORB.
        If (<em>which</em> = <code>tss</code>) then each that
        uses that ORB gets its own set of resources.
        Currently the resources are limited to the reactor.
    </TD>
  </TR>


  <TR>
    <TD><CODE>-ORBUseIMR</CODE> <EM>boolean (0|1)</EM></TD>
    <TD><A name=-ORBUseIMR></A>This argument specifies that for POAs with the
        PERSISTENT policy, that the Implementation Repository should be used for
        notification of startup and shutdown and Object References should be changed
        to use the Implementation Repository also.
    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBLogFile</CODE> <EM>log file name</EM></TD>
    <TD><A name=-ORBLogFile></A>Causes all ACE_DEBUG and ACE_ERROR
        output to be redirected to the specified file.
    </TD>
  </TR>

</TABLE>
</P>
</blockquote>

<H3><A NAME="DefaultResourceFactory"></A><CODE>TAO_Default_Resource_Factory</CODE></H3>

<blockquote>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0">
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
  <TR>
    <TD><CODE>-ORBResources</CODE> <EM>which</EM></TD>
    <TD>Specify whether each thread uses a global
        (<em>which</em> = <code>global</code>) or a thread-specific
        (<em>which</em> = <code>tss</code>) instance for the resources it
        returns. The default is <CODE>global</CODE>.
        <B>NOTE:</B> This option controls the default value for
        the ORB option of the same name.</A>.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBReactorMaskSignals</CODE> <EM>0/1</EM></TD>
    <TD>ACE select reactors mask signals during upcalls to the event
        handlers.  This is only useful if the application is going to
        trap those signals and handle them in any way.
        Disabling the mask can improve performance by reducing the
        number of kernel level locks.
    </TD>
  </TR>
<TR>
  <TD><CODE>-ORBProtocolFactory</CODE> <EM>factory</EM></TD>
  <TD><a name="-ORBProtocolFactory"></a>
      Specify which pluggable protocol factory to load.  By default,
      only the factory for the IIOP protocol
      (<code>IIOP_Factory</code> is loaded.
      <p>
      For example, if some protocol called <em><code>Foo</code></em> whose
      factory was called <em><code>Foo_Factory</code></em> was available,
      then it could be loaded into TAO by specifying
      <code>-ORBProtocolFactory Foo_Factory</code> in the service
      configurator file. The
      <em><code>Foo</code></em> pluggable protocol would then be available
      for use.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBIORParser</CODE> <EM>parser</EM></TD>
  <TD><a name="-ORBIORParser"></a>
      Name an IOR Parser to load.
      IOR Parsers are used to interpret strings passed to
      <CODE>ORB::string_to_object()</CODE>.
      By default the ORB can handle multiple string formats,
      including <CODE>IOR:</CODE>,
      <CODE>corbaloc:</CODE>,
      <CODE>corbaname:</CODE>,
      and <CODE>file:</CODE>.
      The application developer can
      <A HREF="ior_parsing.html">
        add new IOR formats
      </A>
      using this option.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBConnectionCachingStrategy</CODE> <EM>type</EM></TD>
  <TD><a name="-ORBConnectionCachingStrategy"></a>
      Opened connections are added to the transport cache so they can be
      reused.  However, if a process continues to run and these
      connections are not reused, the cache will continue to grow. 
      Therefore, before each new connection, the cache is checked and
      purged if it has reached the limit specified by the
      -ORBConnectionCacheMax option or the system default if that option was
      not used.  The possible values for type are lru, lfu, fifo and null.
      The default is LRU (Least Recently Used).  The others LFU (Least
      Frequently Used), FIFO (First In First Out), and null (No connections
      are purged) are contained within the TAO Strategies library.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBConnectionCacheMax</CODE> <EM>limit</EM></TD>
  <TD><a name="-ORBConnectionCacheMax"></a>
      The transport cache will grow to a maximum of the specified limit.
      The default is system dependent, but can be overridden at compile
      time by defining the preprocessor macro TAO_CONNECTION_CACHE_MAXIMUM.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBConnectionCachePurgePercentage</CODE> <EM>percent</EM></TD>
  <TD><a name="-ORBConnectionCachePurgePercentage"></a>
      If the transport cache is purged, the specified percentage (20 by
      default) of the total number of connections cached will be closed.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBPurgePercentage</CODE> <EM>percent</EM></TD>
  <TD><a name="-ORBPurgePercentage"></a>
      This option is deprecated and will automatically forward to
      -ORBConnectionCachePurgePercentage.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBConnectionLock</CODE> <EM>locktype</EM></TD>
  <TD><a name="-ORBConnectionLock"></a>
      This option deprecated. Usage of this option will switch usage
      automatically to "-ORBConnectionCacheLock". Please see the
      documentation of "-ORBConnectionCacheLock" for details.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBConnectionCacheLock</CODE> <EM>locktype</EM></TD>
  <TD><a name="-ORBConnectionCacheLock"></a>
      Specify the type of lock to be used by the Connection
      Cache. Possible values for lock type are <code>thread</code>, which specifies
      that an inter-thread mutex is used to guarantee exclusive
      access, and <code>null</code>, which specifies that no locking be
      performed. The default is thread.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBFlushingStrategy</CODE> <EM>type</EM></TD>
  <TD><a name="-ORBFlshingStrategy"></a>
      By default TAO provides three strategies to flush queued
      messages.
      The <CODE>leader_follower</CODE> strategy uses the Reactor and
      non-blocking I/O to send the outgoing messages,
      this strategy participates in the Leader/Followers protocol to
      synchronize access to the Reactor.
      The <CODE>reactive</CODE> strategy uses the Reactor but does not
      take part in the Leader/Followers
      protocol, thus it is better used only
      in single threaded applications.
      Finally, the <CODE>blocking</CODE> strategy flushes the
      queue as soon as it becomes "full", and blocks the
      thread until all the data is sent.
  </TD>
</TR>
</TABLE>
</P>
</blockquote>

<H3><A NAME="AdvancedResourceFactory"></A><CODE>TAO_Advanced_Resource_Factory</CODE></H3>

<p>This factory is located in the TAO_Strategies library.
It accepts the options below as well as those described above in the
<A HREF="#DefaultResourceFactory"><CODE>TAO_Default_Resource_Factory</CODE></A>.
This factory can be loaded dynamically using a service configurator
directive of the form (all on one line):
<p><code>dynamic Advanced_Resource_Factory Service_Object * TAO_Strategies:_make_TAO_Advanced_Resource_Factory () "-ORBReactorType select_st"</code>

<p>It can also be loaded statically by doing the following:
<UL>
   <LI>Add a <code>#include "tao/Strategies/advanced_resource.h"</code> to the file containing <code>main()</code>
   <LI>Link the TAO_Strategies library into the executable
   <LI>Specify a service configurator directive of the form: <code>static Advanced_Resource_Factory "-ORBReactorType select_st"</code>
</UL>
<p>You can omit the <code>#include</code> if you always use dynamic libraries.
<p>Once you have loaded the Advanced_Resource_Factory, then directives for the Resource_Factory have no effect (and generate warnings telling you so).
<p><em>Note:</em> <code>-ORBReactorLock</code> flag has been
superseded by <code><A HREF="#-ORBReactorType">-ORBReactorType</A></code>.

<blockquote>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0">
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
  <TR>
    <TD><CODE>-ORBReactorType</CODE> <EM>which</EM></TD>
    <TD><a name="-ORBReactorType"></a>Specify what kind of reactor the
        ORB uses. The default reactor is the ACE_TP_Reactor.
        <TABLE BORDER="1" CELLSPACING="2" CELLPADDING="0">
          <TR><TH><em>which</em></TH><TH>Reactor</TH>
        </TR>
        <TR>
          <TD><CODE>select_mt</CODE></TD>
          <TD>Use the multi-thread select-based reactor.</TD>
        </TR>

        <TR>
          <TD><CODE>select_st</CODE></TD>
          <TD>Use the single-thread select-based reactor.</TD>
        </TR>

        <TR>
          <TD><CODE>fl</CODE></TD>
          <TD>Use the FLReactor (FLTK-based).</TD>
        </TR>

        <TR>
          <TD><CODE>wfmo</CODE></TD>
          <TD>Use the WFMO reactor (Win32 only).</TD>
        </TR>

        <TR>
          <TD><CODE>msg_wfmo</CODE></TD>
          <TD>Use the MsgWFMO reactor (Win32 only).</TD>
        </TR>

        <TR>
          <TD><CODE>tp</CODE></TD>
          <TD>Use the <CODE>ACE_TP_Reactor</CODE>, a select based
              thread-pool reactor.</TD>
        </TR>
      </TABLE>
</TD>
</TR>
<TR>
  <TD><CODE>-ORBInputCDRAllocator</CODE> <EM>which</EM></TD>
  <TD><a name="-ORBInputCDRAllocator"></a>
      Specify whether the ORB uses locked
      (<em>which</em> = <code>thread</code>)
      or lock-free (<em>which</em> = <code>null</code>)
      allocators for the incoming CDR buffers.
      Though <CODE>null</CODE> should give the
      optimal performance;
      we made the default <CODE>thread</CODE>.
      TAO optimizations for octet sequences will not work in all cases when
      the allocator does not have locks (for example if the
      octet sequences are part of a return value).
      Using locked allocators also allows the users to
      take advantage of the TAO octet sequence
      extensions to preserve the buffer after the upcall.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBReactorRegistry</CODE> <EM>registry_type</EM></TD>
  <TD><a name="-ORBReactorRegistry"></a>
      Select the type of reactor registry.
      Currently two implementations are provided:
      <B>single</B> uses a single reactor per ORB, this is the default
            and is sufficient for most applications.
      Applications with stringent QoS requirements may prefer
      the <B>per-priority</B> strategy, in this case threads at
      different CORBA priorities are assigned different
      reactors.  This last option is usually used in conjunction with
      the endpoint-per-priority concurrency model.
  </TD>
</TR>
</TABLE>
</P>
</blockquote>

<H3><A NAME="DefaultServer"></A><CODE>TAO_Default_Server_Strategy_Factory</CODE></H3>

<p><em>Note:</em> <code>-ORBDemuxStrategy</code> flag has been changed to <code>-ORBSystemidPolicyDemuxStrategy</code> and <code>-ORBUseridPolicyDemuxStrategy</code>.
<p><em>Note:</em> <code>-ORBTableSize</code> flag has been changed to <code>-ORBActiveObjectMapSize</code>.

<blockquote>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0" >
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
  <TR>

    <TD><a name="orb_concurrency"><CODE>-ORBConcurrency</CODE></a>
        <EM>which</EM></TD>
    <TD>Specify which
        concurrency strategy to use.  Range of values is <code>reactive</code>
        for a purely Reactor-driven concurrency strategy or
        <code>thread-per-connection</code> for creating a new thread to
        service each connection. The default is reactive.
              <P>
                TAO also supports the thread-pool concurrency model
                but this is implemented by the user, creating multiple
                threads that call <CODE>ORB::run()</CODE> and using
                the <CODE>-ORBReactorType tp</CODE> option.
              </P>
    </TD>
  </TR>
  <TR>

    <TD><a name="server_timeout"><CODE>-ORBThreadPerConnectionTimeout</CODE></a>
        <EM>milliseconds</EM></TD>
    <TD>In many platforms it is impossible to interrupt the server
              threads created by the
              <code>thread-per-connection</code> model.
              This is because these threads are blocked in
              <CODE>read()</CODE> operations (and not in
              <CODE>select()</CODE>).
              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 value <CODE>INFINITE</CODE>.

              <P>
                If the option is not provided then the ORB uses the
                compile time flag
                <CODE>TAO_DEFAULT_THREAD_PER_CONNECTION_TIMEOUT</CODE>,
                this flag also expresses the time in milliseconds (as
                a string constant) and the magic value
                <CODE>"INFINITE"</CODE> can be used to disable polling
                entirely. This yields a slight performance improvement
                (around 1%).
              </P>
            </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBActiveObjectMapSize</CODE> <EM>active object map
        size</EM></TD>
    <TD>Specify the size of the active object map. If not
        specified, the default value is 64.</TD>
  </TR>
  <TR>

    <TD><CODE>-ORBUseridPolicyDemuxStrategy</CODE> <EM>user id policy
        based demultiplexing strategy</EM></TD>
    <TD>Specify the demultiplexing
        lookup strategy to be used with the user id policy.  The
        <EM>demultiplexing strategy</EM> can be one of <CODE>dynamic</CODE> or
        <CODE>linear</CODE>.  This option defaults to use the
        <CODE>dynamic</CODE> strategy. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBSystemidPolicyDemuxStrategy</CODE> <EM>system id policy
        based demultiplexing strategy</EM></TD>

    <TD>Specify the demultiplexing lookup strategy to be used with the
        system id policy. The <EM>demultiplexing strategy</EM> can be
        one of <CODE>dynamic</CODE>, <CODE>linear</CODE>, or
        <CODE>active</CODE>. This option defaults to use the
        <CODE>dynamic</CODE> strategy when
        <CODE>-ORBAllowReactivationOfSystemids</CODE> is true, and to
        <CODE>active</CODE> strategy when
        <CODE>-ORBAllowReactivationOfSystemids</CODE> is false. </TD>

  </TR>
  <TR>

    <TD><CODE>-ORBUniqueidPolicyReverseDemuxStrategy</CODE> <EM>unique id
        policy based reverse demultiplexing strategy</EM></TD>
    <TD>Specify the
        reverse demultiplexing lookup strategy to be used with the unique id
        policy. The <EM>reverse demultiplexing strategy</EM> can be one of
        <CODE>dynamic</CODE> or <CODE>linear</CODE>. This option defaults to
        use the <CODE>dynamic</CODE> strategy. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBAllowReactivationOfSystemids</CODE> <EM>allows
        reactivation of system ids</EM></TD>
    <TD>Specify 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
        <CODE>ORBAllowReactivationOfSystemids</CODE> can be <CODE>0</CODE> or
        <CODE>1</CODE>. This option defaults to <CODE>1</CODE>. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBActiveHintInIds</CODE> <EM>adds an active hint in
        ids</EM></TD>
    <TD>Specify 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
        <CODE>-ORBAllowReactivationOfSystemids</CODE> is set to
        <CODE>0</CODE>. The <EM>-ORBActiveHintInIds</EM> can be <CODE>0</CODE>
        or <CODE>1</CODE>. This option defaults to <CODE>1</CODE>. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBPoaMapSize</CODE> <EM>poa map size</EM></TD>
    <TD>Specify
        the size of the poa map. If not specified, the default value is
        24.</TD>
  </TR>
  <TR>

    <TD><CODE>-ORBPersistentidPolicyDemuxStrategy</CODE> <EM>persistent
        id policy based demultiplexing strategy</EM></TD>
    <TD>Specify the
        demultiplexing lookup strategy to be used with the persistent id
        policy.  The <EM>demultiplexing strategy</EM> can be one of
        <CODE>dynamic</CODE> or <CODE>linear</CODE>.  This option defaults to
        use the <CODE>dynamic</CODE> strategy. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBTransientidPolicyDemuxStrategy</CODE> <EM>transient id
        policy based demultiplexing strategy</EM></TD>
    <TD>Specify the
        demultiplexing lookup strategy to be used with the transient id
        policy. The <EM>demultiplexing strategy</EM> can be one of
        <CODE>dynamic</CODE>, <CODE>linear</CODE>, or
        <CODE>active</CODE>. This option defaults to use the
        <CODE>active</CODE> strategy. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBActiveHintInPOANames</CODE> <EM>adds an active hint in
        poa names</EM></TD>
    <TD>Specify 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
        <EM>-ORBActiveHintInPOANames</EM> can be <CODE>0</CODE> or
        <CODE>1</CODE>. This option defaults to <CODE>1</CODE>. </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBThreadFlags</CODE> <EM>thread flags</EM></TD>
    <TD>Specify the flags used for thread creation. Flags can be any
        logical-OR combination of <CODE>THR_DETACHED</CODE>,
        <CODE>THR_BOUND</CODE>, <CODE>THR_NEW_LWP</CODE>,
        <CODE>THE_SUSPENDED</CODE>. The default is <CODE>THR_BOUND |
        THR_DETACHED</CODE> . </TD>
  </TR>
  <TR>

    <TD><CODE>-ORBPOALock</CODE> <EM>lock type</EM></TD>
    <TD><a
        name="-ORBPOALock"></a>Specify the type of lock to be used for POA
        accesses.  Possible values for <em>lock type</em> are
        <code>thread</code>, which specifies that an inter-thread mutex is
        used to guarantee exclusive access, and <code>null</code>, which
        specifies that no locking be performed.  The default is
        <code>thread</code>.</TD>
  </TR>
<!--
  <TR>

    <TD><CODE>-ORBEventLoopLock</CODE> <EM>lock type</EM></TD>
    <TD><font color=red>Somebody document me.</font></TD>
  </TR>
  <TR>
-->
    <TD><CODE>-ORBConnectorLock</CODE> <EM>lock type</EM></TD>
    <TD><a
        name="-ORBConnectorLock"></a>This option has been deprecated.</TD>
  </TR>

</TABLE>
</P>
</blockquote>

<H3><A NAME="DefaultClient"></A><CODE>TAO_Default_Client_Strategy_Factory</CODE></H3>

<BLOCKQUOTE>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0" >
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
  <TR>
    <TD><CODE><a name="#-ORBProfileLock">-ORBProfileLock</a></CODE> <EM>which</EM></TD>
    <TD>
        Specify the kind of synchronization primitive for the
        Profiles.
        Default is <code>thread</code>, which means that a regular thread
        mutex is used. The
        second option is <code>null</code>, 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.
    </TD>
  </TR>
  <TR>
    <TD><CODE>-ORBClientConnectionHandler</CODE> <EM>MT / ST / RW</EM></TD>

    <TD><A name="-ORBClientConnectionHandler"></a>

        ST 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. <p>

        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.  <p>

        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. <p>

        Default for this option is MT.

    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBTransportMuxStrategy</CODE> <EM>EXCLUSIVE / MUXED</EM></TD>

    <TD><A name="-ORBTransportMuxStrategy"></a>

        EXCLUSIVE means that the Transport does not multiplex requests on a
        connection. At a time, there can be only one request pending on a
        connection.  <p>

        MUXED means that Transport multiplexes more than one request at the
        same time on a connection.  This option is often used in
        conjunction with Asynchronous Method Invocation, because
        multiple requests can be sent 'in bulk'. <p>

        Default for this option is EXCLUSIVE.

    </TD>
  </TR>

  <TR>
    <TD><CODE>-ORBConnectorLock</CODE> <EM>lock type</EM></TD>
    <TD><a
        name="-ORBConnectorLock"></a> This option has been deprecated.
    </TD>
  </TR>

</TABLE>
</P>
</BLOCKQUOTE>

<H3><A NAME="RT_ORB_Loader"></A><CODE>RT_ORB_Loader</CODE></H3>

<BLOCKQUOTE>
<P><TABLE BORDER="2" CELLSPACING="2" CELLPADDING="0" >
  <TR>
    <TH>Option</TH>
    <TH>Description</TH>
  </TR>
<TR>
  <TD><CODE>-ORBSchedPolicy</CODE> <EM>policy</EM></TD>
  <TD><a name="-ORBSchedPolicy"></a>
      Specify the scheduling policy used for the priority mapping
      computations.
      Priority mappings map the CORBA priority range (from 0 to 32767)
      into the native OS priority range, but in some operating systems
      the range depends on the scheduling policy used.
      Using this option the user can set the scheduling policy, valid
      values as <B>SCHED_OTHER</B>, <B>SCHED_FIFO</B> and
      <B>SCHED_RR</B>, notice that in some operating systems some of
      the scheduling policies require super user privileges.
  </TD>
</TR>
<TR>
  <TD><CODE>-ORBPriorityMapping</CODE> <EM>mapping_type</EM></TD>
  <TD><a name="-ORBPriorityMapping"></a>
      Select the priority mapping to use.
      The default resource factory provide two priority mapping
      implementations, <B>linear</B> selects a linear mapping between
      the CORBA range of priorities and the native range of
      priorities for the selected scheduling policy.
      The <B>direct</B> mapping maps the first <B>n</B> CORBA
      priorities to the range of native priorities,
      where <B>n</B> is the number of native priorities.
      In all the operating systems where TAO is supported the range of
      CORBA priorities is larger than the native set.
  </TD>
</TR>

</TABLE>
</P>
</BLOCKQUOTE>

</blockquote>

<P><HR><P>
Back to the TAO <A HREF="components.html">components documentation</A>.

<!--#include virtual="/~schmidt/cgi-sig.html" -->
</HTML>