Author: buildbot
Date: Fri Aug 23 01:58:33 2019
New Revision: 1049204

Log:
Production update by buildbot for cxf

Modified:
    websites/production/cxf/content/cache/docs.pageCache
    websites/production/cxf/content/docs/using-apache-htrace.html

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

Modified: websites/production/cxf/content/docs/using-apache-htrace.html
==============================================================================
--- websites/production/cxf/content/docs/using-apache-htrace.html (original)
+++ websites/production/cxf/content/docs/using-apache-htrace.html Fri Aug 23 
01:58:33 2019
@@ -100,15 +100,7 @@ Apache CXF -- Using Apache HTrace
                 <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><div class="aui-message 
aui-message-error"><p class="title"><strong>Error rendering macro 
'html'</strong></p><p>Your Confluence administrator has disallowed the use of 
Javascript in the HTML macro.  This setting can be changed using  HTML for 
Confluence Configuration.  Please see your administrator for 
details.</p></div><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-em
 bedded-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>
                     <!-- NavigationBar -->
                   </div>
               </div>
@@ -119,11 +111,11 @@ Apache CXF -- Using Apache HTrace
            <!-- Content -->
            <div class="wiki-content">
 <div id="ConfluenceContent"><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1546790222248 {padding: 0px;}
-div.rbtoc1546790222248 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1546790222248 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1566525464347 {padding: 0px;}
+div.rbtoc1566525464347 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1566525464347 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1546790222248">
+/*]]>*/</style></p><div class="toc-macro rbtoc1566525464347">
 <ul class="toc-indentation"><li><a shape="rect" 
href="#UsingApacheHTrace-Overview">Overview</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-DistributedTracinginNutshell">Distributed Tracing in 
Nutshell</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-DistributedTracinginApacheCXFusingApacheHTrace">Distributed
 Tracing in Apache CXF using Apache HTrace</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-ConfiguringClientconfigure.client">Configuring 
Client</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#UsingApacheHTrace-Configuringtracingheadernames">Configuring tracing 
header names</a></li></ul>
 </li><li><a shape="rect" 
href="#UsingApacheHTrace-ConfiguringServerconfigure.server">Configuring 
Server</a>
@@ -131,7 +123,7 @@ div.rbtoc1546790222248 li {margin-left:
 </li><li><a shape="rect" 
href="#UsingApacheHTrace-DistributedTracingInAction:UsageScenarios">Distributed 
Tracing In Action: Usage Scenarios</a>
 <ul class="toc-indentation"><li><a shape="rect" 
href="#UsingApacheHTrace-Example#1:ClientandServerwithdefaultdistributedtracingconfigured">Example
 #1: Client and Server with default distributed tracing 
configured</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-Example#2:ClientandServerwithnestedtrace">Example #2: 
Client and Server with nested trace</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-Example#3:ClientandServertracewithtimeline">Example 
#3: Client and Server trace with timeline</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-Example#4:ClientandServerwithannotatedtrace(key/value)">Example
 #4: Client and Server with annotated trace (key/value)</a></li><li><a 
shape="rect" 
href="#UsingApacheHTrace-Example#5:ClientandServerwithparalleltrace(involvingthreadpools)">Example
 #5: Client and Server with parallel trace (involving thread 
pools)</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-Example#6:ClientandServerwithasynchronousJAX-RSservice(server-side)">Exampl
 e #6: Client and Server with asynchronous JAX-RS service 
(server-side)</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-Example#7:ClientandServerwithasynchronousinvocation(client-side)">Example
 #7: Client and Server with asynchronous invocation (client-side)</a></li></ul>
 </li><li><a shape="rect" 
href="#UsingApacheHTrace-DistributedTracingApacheHTraceandJAX-WSsupport">Distributed
 Tracing Apache HTrace and JAX-WS support</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-PropagatingTraceDetailsToLogs">Propagating Trace 
Details To Logs</a></li><li><a shape="rect" 
href="#UsingApacheHTrace-AccessingApacheHTraceAPIs">Accessing Apache HTrace 
APIs</a></li><li><a shape="rect" href="#UsingApacheHTrace-FutureWork">Future 
Work</a></li></ul>
-</div><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The <a shape="rect" 
class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> project 
has retired on<strong> 2018-04-11</strong> and is not developed anymore. The 
Apache CXF will no longer provide the <a shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> 
integration, staring from <strong>3.3.0</strong> 
release.&#160;</p></div></div><h1 
id="UsingApacheHTrace-Overview">Overview</h1><p><a shape="rect" 
class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> is a 
tracing framework intended for use with distributed systems written in java. 
Since version <strong>3.1.3</strong>, Apache CXF fully supports integration 
with <a shape="rect" 
 class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a>, both on 
client side and server side. This section gives a complete overview on how 
distributed tracing support is supported in JAX-RS applications built on top of 
Apache CXF.</p><h1 
id="UsingApacheHTrace-DistributedTracinginNutshell">Distributed Tracing in 
Nutshell</h1><p>Distributed tracing, first described by Google in <a 
shape="rect" class="external-link" 
href="http://research.google.com/pubs/pub36356.html"; rel="nofollow">Dapper, a 
Large-Scale Distributed Systems Tracing Infrastructure</a> paper became 
increasingly important topic these days. With microservices (aka SOA) gaining 
more and more adoption, the typical applications are built using dozens or even 
hundreds of small, distributed pieces. The end-to-end traceability of the 
requests (or any kind of work performed on user's behalf) is hard task to 
accomplish, particularly taking into account asyncronous or/and concurrent 
invocations
 . <a shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> is 
inspired by <a shape="rect" class="external-link" 
href="http://research.google.com/pubs/pub36356.html"; rel="nofollow">Dapper, a 
Large-Scale Distributed Systems Tracing Infrastructure</a> paper and 
essentially is a full-fledged distributed tracing framework.</p><p>Distributed 
tracing is additional instrumentation layer on top of new or existing 
applications. In terms of distributed tracing, <strong>span</strong> represents 
a basic unit of work. For example, executing database query is a 
<strong>span</strong>. <strong>Spans</strong> are identified by a unique 
128-bit ID. <strong>Spans</strong> also have other data, such as 
<strong>descriptions</strong>, <strong>timelines</strong>,<strong> key-value 
annotations</strong>, the <strong>ID</strong> of the <strong>span</strong> that 
caused them (parent), and <strong>process/tracer</strong> ID&#8217;s (normally 
IP address and pro
 cess name). Spans are started and stopped, and they keep track of their timing 
information. Once <strong>span</strong> is created, it should be stopped at 
some point in the future. In turn, <strong>trace</strong> is a set of spans 
forming a tree-like structure. For example, if you are running a JAX-RS 
service, a trace might be formed by a <strong>PUT</strong> request and 
downstream work.</p><p>From implementation perspective, and in context of Java 
applications, <strong>spans</strong> are attached to their threads (in general, 
thread which created the <strong>span</strong> should close it). However it is 
possible to transfer <strong>spans</strong> from thread to thread in order to 
model a complex execution flows. It is also possible to have many 
<strong>spans</strong> in the same thread, as long as they are properly created 
and closed. In the next sections we are going to see the examples of 
that.</p><p>Another two important concepts in context of distributed tracing 
are <strong>spa
 n receivers</strong> and <strong>samplers</strong>. Essentially, all spans 
(including start/stop time, key/value annotations, timelines, ..) should be 
persisted (or collected) somewhere. <strong>Span receiver</strong> is a 
collector within a process that is the destination of <strong>spans</strong> 
when a trace is running (it could be a console, local file, data store, ...). 
<a shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> provides 
span receivers for <a shape="rect" class="external-link" 
href="http://hbase.apache.org";>Apache HBase</a>, <a shape="rect" 
class="external-link" href="https://flume.apache.org/";>Apache Flume</a> and <a 
shape="rect" class="external-link" href="http://zipkin.io/"; 
rel="nofollow">Twitter Zipkin</a>. From other side, <strong>samplers</strong> 
allow to control the frequency of the tracing (all the time, never, probability 
driven, ...). Using the <strong>sampler</strong> is the way to minimize tracing 
ov
 erhead (or just amount of traces) by limiting them to particular 
conditions.</p><h1 
id="UsingApacheHTrace-DistributedTracinginApacheCXFusingApacheHTrace">Distributed
 Tracing in Apache CXF using Apache HTrace</h1><p><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> is a very popular framework for 
building services and web APIs. No doubts, it is going to play even more 
important role in context of microservices architecture letting developers to 
quickly build and deploy individual JAX-RS/JAX-WS services. As it was just 
mentioned before, distributed tracing is an essential technique to monitor the 
application as whole, breaking the request to individual service traces as it 
goes through and crosses the boundaries of threads, processes and 
machines.</p><p>The current integration of distributed tracing in <a 
shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> supports <a 
shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace
 </a> (<strong>4.x+</strong> release branch) only in JAX-RS 2.x applications. 
From high-level prospective, it consists of three main parts:</p><ul 
style="list-style-type: square;"><li><strong>TracerContext</strong> (injectable 
through <strong>@Context</strong> 
annotation)</li><li><strong>HTraceProvider</strong> (server-side JAX-RS 
provider) and <strong>HTraceClientProvider</strong> (client-side JAX-RS 
provider)</li><li><strong>HTraceFeature</strong> (server-side <a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> feature to simplify <a 
shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> 
configuration and integration)</li></ul><p><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> uses HTTP headers to hand off 
tracing context from the client to the service and from the service to service. 
Those headers are used internally by <strong>HTraceProvider</strong> and 
<strong>HTraceClientProvider</strong>, but are configu
 rable. The default header names are declared in the TracerHeaders 
class:</p><ul style="list-style-type: square;"><li><strong>X-Span-Id</strong>: 
contains a current span ID</li></ul><p>By default, 
<strong>HTraceProvider</strong> will try to pass the currently active 
<strong>span</strong> through HTTP headers on each service invocation. If there 
is no active spans, the new span will be created and passed through HTTP 
headers on per-invocation basis. Essentially, just registering the 
<strong>HTraceClientProvider</strong> on the client 
and&#160;<strong>HTraceProvider</strong> on the server is enough to have 
tracing context to be properly passed everywhere. The only configuration part 
which is necessary are <strong>span receiver(s)</strong> and 
<strong>sampler</strong>(s).</p><p>It is also worth to mention the way <a 
shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> attaches the 
description to <strong>spans</strong>. With regards to the client integration, 
the description becomes
  a full URL being invoked prefixed by HTTP method, for example: <strong>GET 
</strong><a shape="rect" class="external-link" 
href="http://localhost:8282/books"; 
rel="nofollow"><strong>http://localhost:8282</strong>/books</a>. On the server 
side integration, the description becomes a relative JAX-RS resource path 
prefixed by HTTP method, f.e.: <strong>GET books, POST book/123</strong></p><h1 
id="UsingApacheHTrace-ConfiguringClientconfigure.client">Configuring Client 
<span class="confluence-anchor-link" 
id="UsingApacheHTrace-configure.client"></span></h1><p>There are a couple of 
ways the JAX-RS client could be configured, depending on the client 
implementation. <a shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> 
provides its own <strong>WebClient</strong> which could be configured just like 
that (in future versions, there would be a simpler ways to do that using client 
specific features):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelCont
 ent pdl">
+</div><div class="confluence-information-macro 
confluence-information-macro-warning"><span class="aui-icon aui-icon-small 
aui-iconfont-error confluence-information-macro-icon"></span><div 
class="confluence-information-macro-body"><p>The <a shape="rect" 
class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> project 
has retired on<strong> 2018-04-11</strong> and is not developed anymore. The 
Apache CXF retired the <a shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> 
integration, starting from <strong>3.3.0</strong> 
release.&#160;</p></div></div><h1 
id="UsingApacheHTrace-Overview">Overview</h1><p><a shape="rect" 
class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> is a 
tracing framework intended for use with distributed systems written in java. 
Since version <strong>3.1.3</strong>, Apache CXF fully supports integration 
with <a shape="rect" class="externa
 l-link" href="http://htrace.incubator.apache.org/index.html";>Apache 
HTrace</a>, both on client side and server side. This section gives a complete 
overview on how distributed tracing support is supported in JAX-RS applications 
built on top of Apache CXF.</p><h1 
id="UsingApacheHTrace-DistributedTracinginNutshell">Distributed Tracing in 
Nutshell</h1><p>Distributed tracing, first described by Google in <a 
shape="rect" class="external-link" 
href="http://research.google.com/pubs/pub36356.html"; rel="nofollow">Dapper, a 
Large-Scale Distributed Systems Tracing Infrastructure</a> paper became 
increasingly important topic these days. With microservices (aka SOA) gaining 
more and more adoption, the typical applications are built using dozens or even 
hundreds of small, distributed pieces. The end-to-end traceability of the 
requests (or any kind of work performed on user's behalf) is hard task to 
accomplish, particularly taking into account asyncronous or/and concurrent 
invocations. <a shape="re
 ct" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> is 
inspired by <a shape="rect" class="external-link" 
href="http://research.google.com/pubs/pub36356.html"; rel="nofollow">Dapper, a 
Large-Scale Distributed Systems Tracing Infrastructure</a> paper and 
essentially is a full-fledged distributed tracing framework.</p><p>Distributed 
tracing is additional instrumentation layer on top of new or existing 
applications. In terms of distributed tracing, <strong>span</strong> represents 
a basic unit of work. For example, executing database query is a 
<strong>span</strong>. <strong>Spans</strong> are identified by a unique 
128-bit ID. <strong>Spans</strong> also have other data, such as 
<strong>descriptions</strong>, <strong>timelines</strong>,<strong> key-value 
annotations</strong>, the <strong>ID</strong> of the <strong>span</strong> that 
caused them (parent), and <strong>process/tracer</strong> ID&#8217;s (normally 
IP address and process name). Sp
 ans are started and stopped, and they keep track of their timing information. 
Once <strong>span</strong> is created, it should be stopped at some point in 
the future. In turn, <strong>trace</strong> is a set of spans forming a 
tree-like structure. For example, if you are running a JAX-RS service, a trace 
might be formed by a <strong>PUT</strong> request and downstream 
work.</p><p>From implementation perspective, and in context of Java 
applications, <strong>spans</strong> are attached to their threads (in general, 
thread which created the <strong>span</strong> should close it). However it is 
possible to transfer <strong>spans</strong> from thread to thread in order to 
model a complex execution flows. It is also possible to have many 
<strong>spans</strong> in the same thread, as long as they are properly created 
and closed. In the next sections we are going to see the examples of 
that.</p><p>Another two important concepts in context of distributed tracing 
are <strong>span receivers</s
 trong> and <strong>samplers</strong>. Essentially, all spans (including 
start/stop time, key/value annotations, timelines, ..) should be persisted (or 
collected) somewhere. <strong>Span receiver</strong> is a collector within a 
process that is the destination of <strong>spans</strong> when a trace is 
running (it could be a console, local file, data store, ...). <a shape="rect" 
class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> provides 
span receivers for <a shape="rect" class="external-link" 
href="http://hbase.apache.org";>Apache HBase</a>, <a shape="rect" 
class="external-link" href="https://flume.apache.org/";>Apache Flume</a> and <a 
shape="rect" class="external-link" href="http://zipkin.io/"; 
rel="nofollow">Twitter Zipkin</a>. From other side, <strong>samplers</strong> 
allow to control the frequency of the tracing (all the time, never, probability 
driven, ...). Using the <strong>sampler</strong> is the way to minimize tracing 
overhead (or jus
 t amount of traces) by limiting them to particular conditions.</p><h1 
id="UsingApacheHTrace-DistributedTracinginApacheCXFusingApacheHTrace">Distributed
 Tracing in Apache CXF using Apache HTrace</h1><p><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> is a very popular framework for 
building services and web APIs. No doubts, it is going to play even more 
important role in context of microservices architecture letting developers to 
quickly build and deploy individual JAX-RS/JAX-WS services. As it was just 
mentioned before, distributed tracing is an essential technique to monitor the 
application as whole, breaking the request to individual service traces as it 
goes through and crosses the boundaries of threads, processes and 
machines.</p><p>The current integration of distributed tracing in <a 
shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> supports <a 
shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> (<strong>
 4.x+</strong> release branch) only in JAX-RS 2.x applications. From high-level 
prospective, it consists of three main parts:</p><ul style="list-style-type: 
square;"><li><strong>TracerContext</strong> (injectable through 
<strong>@Context</strong> annotation)</li><li><strong>HTraceProvider</strong> 
(server-side JAX-RS provider) and <strong>HTraceClientProvider</strong> 
(client-side JAX-RS provider)</li><li><strong>HTraceFeature</strong> 
(server-side <a shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> 
feature to simplify <a shape="rect" class="external-link" 
href="http://htrace.incubator.apache.org/index.html";>Apache HTrace</a> 
configuration and integration)</li></ul><p><a shape="rect" 
href="http://cxf.apache.org/";>Apache CXF</a> uses HTTP headers to hand off 
tracing context from the client to the service and from the service to service. 
Those headers are used internally by <strong>HTraceProvider</strong> and 
<strong>HTraceClientProvider</strong>, but are configurable. The def
 ault header names are declared in the TracerHeaders class:</p><ul 
style="list-style-type: square;"><li><strong>X-Span-Id</strong>: contains a 
current span ID</li></ul><p>By default, <strong>HTraceProvider</strong> will 
try to pass the currently active <strong>span</strong> through HTTP headers on 
each service invocation. If there is no active spans, the new span will be 
created and passed through HTTP headers on per-invocation basis. Essentially, 
just registering the <strong>HTraceClientProvider</strong> on the client 
and&#160;<strong>HTraceProvider</strong> on the server is enough to have 
tracing context to be properly passed everywhere. The only configuration part 
which is necessary are <strong>span receiver(s)</strong> and 
<strong>sampler</strong>(s).</p><p>It is also worth to mention the way <a 
shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> attaches the 
description to <strong>spans</strong>. With regards to the client integration, 
the description becomes a full URL be
 ing invoked prefixed by HTTP method, for example: <strong>GET </strong><a 
shape="rect" class="external-link" href="http://localhost:8282/books"; 
rel="nofollow"><strong>http://localhost:8282</strong>/books</a>. On the server 
side integration, the description becomes a relative JAX-RS resource path 
prefixed by HTTP method, f.e.: <strong>GET books, POST book/123</strong></p><h1 
id="UsingApacheHTrace-ConfiguringClientconfigure.client">Configuring Client 
<span class="confluence-anchor-link" 
id="UsingApacheHTrace-configure.client"></span></h1><p>There are a couple of 
ways the JAX-RS client could be configured, depending on the client 
implementation. <a shape="rect" href="http://cxf.apache.org/";>Apache CXF</a> 
provides its own <strong>WebClient</strong> which could be configured just like 
that (in future versions, there would be a simpler ways to do that using client 
specific features):</p><div class="code panel pdl" style="border-width: 
1px;"><div class="codeContent panelContent pdl">
 <pre class="brush: java; gutter: false; theme: Default">final Map&lt;String, 
String&gt; properties = new HashMap&lt;String, String&gt;();
 properties.put(Tracer.SPAN_RECEIVER_CLASSES_KEY, ...);
 properties.put(Tracer.SAMPLER_CLASSES_KEY, ...);


Reply via email to