I've reviewed your code and it looks good to me, the integration with
RESTEasy is fine.
On Wed, Nov 21, 2018 at 9:24 AM Michal Szynkiewicz <mszynkie(a)redhat.com>
We need to somehow share the interceptor between the thread that
client and the thread that performs the request.
The glue code is in `AsyncInvocationHandler` . It stores the
interceptors in a `ThreadLocal`.
When building the RESTEasy client, we wrap the `ExecutorService` with a
wrapper that decorates every `Runnable` and `Callable` with invocation of
The code is again in the handler . It takes the value from the
`ThreadLocal` and creates a "wrapped" `Runnable`/`Callable`.
The `ThreadLocal` is filled from a proxy that we wrap calls to the
RESTEasy client in .
The whole change:
Please let me know if what I wrote is unclear.
On Tue, Nov 20, 2018 at 4:29 PM Alessio Soldano <asoldano(a)redhat.com>
> I've been looking a bit at this, but haven't seen anything really meant
> for this. Can you share a link to what you're doing with the
> ExecutorService btw? Maybe that can inspire someone...
> On Tue, Nov 20, 2018 at 12:38 PM Michal Szynkiewicz <mszynkie(a)redhat.com>
>> We are working on MicroProfile Rest Client 1.1 for SmallRye.
>> One of the requirements is to implement AsyncInvocationInterceptor, an
>> interceptor for asynchronous client invocation.
>> The interceptor has two methods (more details in ):
>> - prepareContext, executed in the thread that calls the client
>> - applyContext, executed in the thread that makes the request.
>> Moreover, there is a single instance of the interceptor per request (not
>> per client).
>> Does RestEasy have some feature that we could use to implement executing
>> the applyContext method? We couldn't find anything that would work for us
>> in the JAX-RS itself.
>> We implemented a wrapper for ExecutorService that decorates runnables
>> with code that calls the interceptor but we're hoping there may be a better
>> resteasy-dev mailing list
> Alessio Soldano
> Associate Manager
> Red Hat