You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bu...@apache.org on 2021/11/13 18:57:15 UTC

svn commit: r1077277 - in /websites/production/cxf/content: cache/docs.pageCache docs/asynchronous-client-http-transport.html

Author: buildbot
Date: Sat Nov 13 18:57:15 2021
New Revision: 1077277

Log:
Production update by buildbot for cxf

Modified:
    websites/production/cxf/content/cache/docs.pageCache
    websites/production/cxf/content/docs/asynchronous-client-http-transport.html

Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/cxf/content/docs/asynchronous-client-http-transport.html
==============================================================================
--- websites/production/cxf/content/docs/asynchronous-client-http-transport.html (original)
+++ websites/production/cxf/content/docs/asynchronous-client-http-transport.html Sat Nov 13 18:57:15 2021
@@ -57,11 +57,7 @@ Apache CXF -- Asynchronous Client HTTP T
     <td id="cell-1-1">&nbsp;</td>
     <td id="cell-1-2">
       <!-- Banner -->
-<div class="banner" id="banner"><div><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td align="left" colspan="1" nowrap>
-<a shape="rect" href="http://cxf.apache.org/" title="Apache CXF"><span style="font-weight: bold; font-size: 170%; color: white">Apache CXF</span></a>
-</td><td align="right" colspan="1" nowrap>
-<a shape="rect" href="http://www.apache.org/" title="The Apache Sofware Foundation"><img border="0" alt="ASF Logo" src="http://cxf.apache.org/images/asf-logo.png"></a>
-</td></tr></table></div></div>
+<div class="banner" id="banner"><img class="wysiwyg-unknown-macro" src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2"></div>
       <!-- Banner -->
       <div id="top-menu">
         <table border="0" cellpadding="1" cellspacing="0" width="100%">
@@ -98,15 +94,7 @@ Apache CXF -- Asynchronous Client HTTP T
                 <div id="wrapper-menu-page-bottom">
                   <div id="menu-page">
                     <!-- NavigationBar -->
-<div id="navigation"><ul class="alternate"><li><a shape="rect" href="overview.html">Overview</a></li><li><a shape="rect" href="how-tos.html">How-Tos</a></li><li><a shape="rect" href="frontends.html">Frontends</a></li><li><a shape="rect" href="databindings.html">DataBindings</a></li><li><a shape="rect" href="transports.html">Transports</a></li><li><a shape="rect" href="configuration.html">Configuration</a></li><li><a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a></li><li><a shape="rect" href="tools.html">Tools</a></li><li><a shape="rect" href="restful-services.html">RESTful Services</a></li><li><a shape="rect" href="wsdl-bindings.html">WSDL Bindings</a></li><li><a shape="rect" href="service-routing.html">Service Routing</a></li><li><a shape="rect" href="dynamic-languages.html">Dynamic Languages</a></li><li><a shape="rect" href="ws-support.html">WS-* Support</a></li><li><a shape="rect" href="advanced-integration.html">Advanced Integration</a></li><li><a shape
 ="rect" href="deployment.html">Deployment</a></li><li><a shape="rect" href="schemas-and-namespaces.html">Use of Schemas and Namespaces</a></li></ul><hr><ul class="alternate"><li><p>Search</p></li></ul><form enctype="application/x-www-form-urlencoded" method="get" id="cse-search-box" action="http://www.google.com/cse">
-  <div>
-    <input type="hidden" name="cx" value="002890367768291051730:o99qiwa09y4">
-    <input type="hidden" name="ie" value="UTF-8">
-    <input type="text" name="q" size="21">
-    <input type="submit" name="sa" value="Search">
-  </div>
-</form>
-<script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&amp;lang=en"></script><hr><ul class="alternate"><li><a shape="rect" href="http://cxf.apache.org/javadoc/latest/">API 3.2.x (Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/javadoc/latest-3.1.x/">API 3.1.x (Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/">CXF Website</a></li></ul><p>&#160;</p><p><a shape="rect" class="external-link" href="http://www.apache.org/events/current-event.html"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://www.apache.org/events/current-event-125x125.png" data-image-src="http://www.apache.org/events/current-event-125x125.png"></span></a></p></div>
+<div id="navigation"><ul class="alternate"><li><a shape="rect" href="overview.html">Overview</a></li><li><a shape="rect" href="how-tos.html">How-Tos</a></li><li><a shape="rect" href="frontends.html">Frontends</a></li><li><a shape="rect" href="databindings.html">DataBindings</a></li><li><a shape="rect" href="transports.html">Transports</a></li><li><a shape="rect" href="configuration.html">Configuration</a></li><li><a shape="rect" href="debugging-and-logging.html">Debugging and Logging</a></li><li><a shape="rect" href="tools.html">Tools</a></li><li><a shape="rect" href="restful-services.html">RESTful Services</a></li><li><a shape="rect" href="wsdl-bindings.html">WSDL Bindings</a></li><li><a shape="rect" href="service-routing.html">Service Routing</a></li><li><a shape="rect" href="dynamic-languages.html">Dynamic Languages</a></li><li><a shape="rect" href="ws-support.html">WS-* Support</a></li><li><a shape="rect" href="advanced-integration.html">Advanced Integration</a></li><li><a shape
 ="rect" href="deployment.html">Deployment</a></li><li><a shape="rect" href="schemas-and-namespaces.html">Use of Schemas and Namespaces</a></li></ul><hr><ul class="alternate"><li><p>Search</p></li></ul><img class="wysiwyg-unknown-macro" src="https://cwiki.apache.org/confluence/plugins/servlet/confluence/placeholder/unknown-macro?name=html&amp;locale=en_GB&amp;version=2"><hr><ul class="alternate"><li><a shape="rect" href="http://cxf.apache.org/javadoc/latest/">API 3.2.x (Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/javadoc/latest-3.1.x/">API 3.1.x (Javadoc)</a></li><li><a shape="rect" href="http://cxf.apache.org/">CXF Website</a></li></ul><p>&#160;</p><p><a shape="rect" class="external-link" href="http://www.apache.org/events/current-event.html"><span class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image confluence-external-resource" src="http://www.apache.org/events/current-event-125x125.png" data-image-src="http://www.apache.org/events/cu
 rrent-event-125x125.png"></span></a></p></div>
                     <!-- NavigationBar -->
                   </div>
               </div>
@@ -116,18 +104,20 @@ Apache CXF -- Asynchronous Client HTTP T
          <td height="100%">
            <!-- Content -->
            <div class="wiki-content">
-<div id="ConfluenceContent"><h1 id="AsynchronousClientHTTPTransport-AsynchronousClientHTTPTransport">Asynchronous Client HTTP Transport</h1><p>By default, CXF uses a transport based on the in-JDK HttpURLConnection object to perform HTTP requests. The HttpURLConnection object uses a blocking model for all IO operations which requires a per-thread execution model. From a pure performance standpoint, this model generally performs very well, but it does have problems scaling when many requests need to be executed simultaneously.</p><p>Also, the JAX-WS specification allows for generation of asynchronous methods on generated proxies as well as using asynchronous methods on the Dispatch objects. These methods can take an AsyncHandler object and return a polling Future object so applications do not have to wait for the response. With the HttpURLConnection based transport, CXF was forced to consume a background thread for each outstanding request.</p><p>CXF also has an HTTP client transport 
 that is based on the <a shape="rect" class="external-link" href="http://hc.apache.org/httpcomponents-asyncclient-dev/index.html">Apache HTTP Components HttpAsyncClient</a> library. Its Maven artifactId is&#160;<span style="line-height: 1.4285715;">cxf-rt-transports-http-hc.</span><span style="line-height: 1.4285715;">&#160;The HttpAsyncClient library uses a non-blocking IO model. This allows many more requests to be outstanding without consuming extra background threads. It also allows greater control over things like Keep-Alive handling which is very difficult or impossible with the HttpURLConnection based transport. However, the non-blocking model does not perform quite as well as the blocking model for pure synchronous request/response transactions.</span></p><p>By default, if the cxf-rt-transports-http-hc module is found on the classpath, CXF will use the HttpAsyncClient based implementation for any Async calls, but will continue to use the HttpURLConnection based transport for 
 synchronous calls. This allows a good balance of performance for the common synchronous cases with scalability for the asynchronous cases. However, using a contextual property of "use.async.http.conduit" and set to true/false, you can control whether the async or blocking version is used. If "true", the HttpAsyncClient will be used even for synchronous calls, if "false", asynchronous calls will rely on the traditional method of using HTTPURLConnection along with a work queue to mimic the asynchronocity.&#160; And if TLSClientParameters sets an SSLSocketFactory,&#160; as SocketFactory class and SocketFactory#createSocket methods in particular are inherently blocking and sockets instantiated in such a way cannot be used for asynchronous, so this lead to use the HttpURLConnection based transport.</p><p>Another reason to use the asynchronous transport is to use HTTP methods that HttpURLConnection does not support. For example, the github.com REST API specifies the use of PATCH for some 
 cases, but HttpURLConnection rejects PATCH.</p><h3 id="AsynchronousClientHTTPTransport-UsingtheHTTPComponentsTransportfromJavaCode">Using the HTTP Components Transport from Java Code</h3><p>To force global use of the HTTP Components transport, you can set a bus-level property:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;"> Bus bus = BusFactory.getDefaultBus();
+<div id="ConfluenceContent"><h1 id="AsynchronousClientHTTPTransport-AsynchronousClientHTTPTransport">Asynchronous Client HTTP Transport</h1><p>By default, CXF uses a transport based on the in-JDK HttpURLConnection object to perform HTTP requests. The HttpURLConnection object uses a blocking model for all IO operations which requires a per-thread execution model. From a pure performance standpoint, this model generally performs very well, but it does have problems scaling when many requests need to be executed simultaneously.</p><p>Also, the JAX-WS specification allows for generation of asynchronous methods on generated proxies as well as using asynchronous methods on the Dispatch objects. These methods can take an AsyncHandler object and return a polling Future object so applications do not have to wait for the response. With the HttpURLConnection based transport, CXF was forced to consume a background thread for each outstanding request.</p><h3 id="AsynchronousClientHTTPTransport-A
 pacheHttpComponents4.x">Apache HttpComponents 4.x</h3><p>CXF also has an HTTP client transport that is based on the <a shape="rect" class="external-link" href="http://hc.apache.org/httpcomponents-asyncclient/index.html">Apache HTTP Components HttpAsyncClient</a> library. Its Maven artifactId is <span style="line-height: 1.4285715;"><strong>cxf-rt-transports-http-hc</strong>.</span><span style="line-height: 1.4285715;">&#160;The HttpAsyncClient library uses a non-blocking IO model. This allows many more requests to be outstanding without consuming extra background threads. It also allows greater control over things like Keep-Alive handling which is very difficult or impossible with the HttpURLConnection based transport. However, the non-blocking model does not perform quite as well as the blocking model for pure synchronous request/response transactions.</span></p><p>By default, if the <strong>cxf-rt-transports-http-hc</strong> module is found on the classpath, CXF will use the <stro
 ng>HttpAsyncClient </strong>based implementation for any Async calls, but will continue to use the HttpURLConnection based transport for synchronous calls. This allows a good balance of performance for the common synchronous cases with scalability for the asynchronous cases. However, using a contextual property of "use.async.http.conduit" and set to true/false, you can control whether the async or blocking version is used. If "true", the HttpAsyncClient will be used even for synchronous calls, if "false", asynchronous calls will rely on the traditional method of using HTTPURLConnection along with a work queue to mimic the asynchronicity.&#160; And if TLSClientParameters sets an SSLSocketFactory,&#160; as SocketFactory class and SocketFactory#createSocket methods in particular are inherently blocking and sockets instantiated in such a way cannot be used for asynchronous, so this lead to use the HttpURLConnection based transport.</p><p>Another reason to use the asynchronous transport 
 is to use HTTP methods that HttpURLConnection does not support. For example, the github.com REST API specifies the use of PATCH for some cases, but HttpURLConnection rejects PATCH.</p><h3 id="AsynchronousClientHTTPTransport-ApacheHttpComponents5.x">Apache HttpComponents 5.x</h3><p>Since <strong>3.4.6</strong>, CXF offers an HTTP client transport that is based on <a shape="rect" class="external-link" href="https://hc.apache.org/httpcomponents-client-5.1.x/index.html">Apache HttpComponents HttpClient 5</a> library, that supports synchronous, asynchronous and reactive programming models. Its Maven artifactId is <span><strong>cxf-rt-transports-http-hc5 </strong>and it serves as in-place replacement for <strong>cxf-rt-transports-http-hc</strong> (but the usage of those two transports together should be avoided).</span><span> </span></p><div class="confluence-information-macro confluence-information-macro-warning"><span class="aui-icon aui-icon-small aui-iconfont-error confluence-informat
 ion-macro-icon"></span><div class="confluence-information-macro-body"><p>At the moment, &#160;<span><strong>cxf-rt-transports-http-hc5 </strong>transport does not support OSGi based deployments</span></p></div></div><h3 id="AsynchronousClientHTTPTransport-UsingtheHTTPComponents4.x/5.xTransportfromJavaCode">Using the HTTP Components 4.x/5.x Transport from Java Code</h3><p>To force global use of the HTTP Components transport, you can set a bus-level property:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default"> Bus bus = BusFactory.getDefaultBus();
  // insist on the async connector to use PATCH.
  bus.setProperty(AsyncHTTPConduit.USE_ASYNC, Boolean.TRUE);</pre>
-</div></div><pre><span style="font-size: 16.0px;line-height: 1.5625;font-family: Arial , sans-serif;">Setting Credentials</span></pre><p>The "normal" CXF/JAX-WS method of setting user credentials via the BindingProvider.USERNAME_PROPERTY/PASSWORD_PROPERTY will work with the Async transport as well. However, the HttpAsyncClient library does have some additional capabilities around NTLM that can be leveraged. In order to use that, you need to:</p><ul><li>Turn on the AutoRedirect and turn off the Chunking for the Conduit. This will allow CXF to cache the response in a manner that will allow the transport to keep resending the request during the authentication negotiation.</li></ul><ul><li><p>Force the use of the Async transport even for synchronous calls</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE);
+</div></div><pre><span style="font-size: 16.0px;line-height: 1.5625;font-family: Arial , sans-serif;">Setting Credentials</span></pre><p>The "normal" CXF/JAX-WS method of setting user credentials via the BindingProvider.USERNAME_PROPERTY/PASSWORD_PROPERTY will work with the Async transport as well. However, the HttpAsyncClient library does have some additional capabilities around NTLM that can be leveraged. In order to use that, you need to:</p><ul><li>Turn on the AutoRedirect and turn off the Chunking for the Conduit. This will allow CXF to cache the response in a manner that will allow the transport to keep resending the request during the authentication negotiation.</li><li><p>Force the use of the Async transport even for synchronous calls</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default">bp.getRequestContext().put("use.async.http.conduit", Boolean.TRUE); 
 </pre>
-</div></div></li></ul><ul><li><p>Set the property "org.apache.http.auth.Credentials" to an instance of the Credentials. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">Credentials creds = new NTCredentials("username", "pswd", null, "domain");
+</div></div><p class="auto-cursor-target">or using <strong>AsyncHTTPConduit.USE_ASYNC</strong> constant</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default">bp.getRequestContext().put(AsyncHTTPConduit.USE_ASYNC, Boolean.TRUE);  </pre>
+</div></div></li><li><p>Set the property "org.apache.http.auth.Credentials" to an instance of the Credentials. For example:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<pre class="brush: java; gutter: false; theme: Default">Credentials creds = new NTCredentials("username", "pswd", null, "domain");
 bp.getRequestContext().put(Credentials.class.getName(), creds);
 </pre>
-</div></div></li></ul><h3 id="AsynchronousClientHTTPTransport-Configuration">Configuration</h3><p>The Asynchronous HTTP Transport has several options that can set using Bus properties or via the OSGi configuration services to control various aspects of the underlying Apache HTTP Components HttpAsyncClient objects.</p><p>Settings related to the underlying TCP socket (see <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html" rel="nofollow">java.net.Socket</a> for a definition of these values):</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.TCP_NODELAY (Default true)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_KEEPALIVE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_LINGER</p></td></tr><tr><td colspan="
 1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_TIMEOUT</p></td></tr></tbody></table></div><p>Settings related to Keep-Alive connection management:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.CONNECTION_TTL</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Maximum time a connection to live(from creation to expiry)<span>&#160;</span>. Default is 60000.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_CONNECTIONS</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>Maximum number of connections opened in total. Default is 5000.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_PER_HOST_CONNECTIONS</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>Maximum number of connections opened
  per host. Default is 1000.</span></p></td></tr></tbody></table></div><p>Settings related to Apache HttpAsyncClient threads and selectors:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.ioThreadCount</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Number of threads HttpAsyncClient uses to process IO events. Default is "-1" which means one thread per CPU core.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.interestOpQueued</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true/false for whether the interest ops are queues or process directly.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.selectInterval</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default 1000 ms. How often the selector thread wakes up if there are no events 
 to process additional things like queue expirations.</p></td></tr></tbody></table></div><p>Setting to control which conduit is used</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.usePolicy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>ALWAYS, ASYNC_ONLY, NEVER.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Similar in meaning to the "use.async.http.conduit" context property described above. Whether to use the HttpAsyncClient: ALWAYS for both synchronous and asynchronous calls, ASYNC_ONLY (default) for asynchronous calls only, NEVER will use HTTPURLConnection for both types of calls.</p></td></tr></tbody></table></div></div>
+</div></div></li></ul><h3 id="AsynchronousClientHTTPTransport-Configuration">Configuration</h3><p>The Asynchronous HTTP Transport has several options that can set using Bus properties or via the OSGi configuration services to control various aspects of the underlying Apache HTTP Components HttpAsyncClient objects.</p><p>Settings related to the underlying TCP socket (see <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html" rel="nofollow">java.net.Socket</a> for a definition of these values):</p><div class="table-wrap"><table class="wrapped confluenceTable"><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.TCP_NODELAY (Default true)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_KEEPALIVE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_LINGER</p></td></tr><tr><td c
 olspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.SO_TIMEOUT</p></td></tr></tbody></table></div><p>Settings related to Keep-Alive connection management:</p><div class="table-wrap"><table class="wrapped confluenceTable"><colgroup span="1"><col span="1"><col span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.CONNECTION_TTL</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Maximum time a connection to live(from creation to expiry)<span>&#160;</span>. Default is 60000.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_CONNECTIONS</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span>Maximum number of connections opened in total. Default is 5000.</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.MAX_PER_HOST_CONNECTIONS</p></td><td colspan="1" rows
 pan="1" class="confluenceTd"><p><span>Maximum number of connections opened per host. Default is 1000.</span></p></td></tr></tbody></table></div><p>Settings related to Apache HttpAsyncClient threads and selectors:</p><div class="table-wrap"><table class="wrapped confluenceTable"><colgroup span="1"><col span="1"><col span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.ioThreadCount</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Number of threads HttpAsyncClient uses to process IO events. Default is "-1" which means one thread per CPU core.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.interestOpQueued <strong>(*)</strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true/false for whether the interest ops are queues or process directly.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http
 .async.selectInterval</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Default 1000 ms. How often the selector thread wakes up if there are no events to process additional things like queue expirations.</p></td></tr></tbody></table></div><p><strong>* </strong>- for&#160;Apache HttpComponents 4.x only</p><p>Setting to control which conduit is used</p><div class="table-wrap"><table class="wrapped confluenceTable"><colgroup span="1"><col span="1"><col span="1"><col span="1"></colgroup><tbody><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>org.apache.cxf.transport.http.async.usePolicy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>ALWAYS, ASYNC_ONLY, NEVER.</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Similar in meaning to the "use.async.http.conduit" context property described above. Whether to use the HttpAsyncClient: ALWAYS for both synchronous and asynchronous calls, ASYNC_ONLY (default) for asynchronous calls only, NEVER will use HTTPU
 RLConnection for both types of calls.</p></td></tr></tbody></table></div></div>
            </div>
            <!-- Content -->
          </td>