We need to somehow share the interceptor between the thread that calls the
client and the thread that performs the request.
The glue code is in `AsyncInvocationHandler` [1]. 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 interceptor.
The code is again in the handler [1]. 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 [2].
The whole change:
https://github.com/mkouba/smallrye-rest-client-1/commit/cff4eb8ea1337fcb1...
Please let me know if what I wrote is unclear.
Regards,
Michał
[1]
https://github.com/mkouba/smallrye-rest-client-1/blob/cff4eb8ea1337fcb127...
[2]
https://github.com/mkouba/smallrye-rest-client-1/commit/cff4eb8ea1337fcb1...
On Tue, Nov 20, 2018 at 4:29 PM Alessio Soldano <asoldano(a)redhat.com> wrote:
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...
Cheers
On Tue, Nov 20, 2018 at 12:38 PM Michal Szynkiewicz <mszynkie(a)redhat.com>
wrote:
> Hi,
>
> 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 [1]):
>
> - 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
> solution.
>
> Thanks,
> Michał
>
>
>
> [1]
>
https://github.com/eclipse/microprofile-rest-client/blob/1.1.X-service/sp...
> _______________________________________________
> resteasy-dev mailing list
> resteasy-dev(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/resteasy-dev
>
--
Alessio Soldano
Associate Manager
Red Hat
<
https://www.redhat.com>
<
https://red.ht/sig>