Hi Pavol,
as mentioned on hipchat, an idea could be to rely on the ResteasyProviderFactory (which has a getInstance static method) and install a dynamic client feature in it (e.g. using registerProviderInstance(Object obj) method).
Perhaps you can try that and see if it fits your scenario.
For the executor, I'm afraid I don't see an already existing solution, besides having your own ClientBuilder that overrides the executorService setup; perhaps we can make this configurable in the ResteasyProviderFactory, though.

If someone from the team has further idea, just reply ;-)
Cheers
Alessio


On Tue, Nov 21, 2017 at 5:22 PM, Pavol Loffay <ploffay@redhat.com> wrote:
Hi, 

I am looking at microprofile-opentracing integration for Wildfly Swarm. Briefly, it is a distributed tracing for JAX-RS both server and client. 

Issue [1] describes what is necessary. But I will repeat here:

Server
1. register server jax-rs filters (no problem, server features are auto-discovered)
2. use servlet filter to finish the span and log any exception to the span - because jax-rs filters do not capture exceptions

Client
1. register tracing filters
2. use OpenTracing-aware ExecutorService - it's needed for async API to correctly propagate parent.
(3.) TCK is not defined yet. However, if they want to create spans for UnknownHostException then we cannot use jax-rs client filters because they are not executed. Network attempt happens before the filter when the exception is thrown. To solve this we have to implement tracing in resteasy or supply apache HC with tracing filters enabled (it also has some problems).


The biggest issue is with client because we need `ClientBuilder.newBuilder()` to return client/builder with enabled tracing.

[1] https://issues.jboss.org/browse/SWARM-1691


--

PAVOL LOFFAY

Red Hat Česká republika

Purkyňova 115 TPB-B 612 00 Brno

M: +421948286055