users@jersey.java.net

[Jersey] Re: Pool for javax.ws.rs.client.Client objects?

From: cowwoc <cowwoc_at_bbs.darktech.org>
Date: Mon, 27 Oct 2014 22:28:40 -0400

Rodrigo,

Assuming you've got a worker thread pool, use ThreadLocal<Client> to
look up an existing Client for the current thread.

Gili

On 27/10/2014 7:11 PM, Rodrigo Uchôa wrote:
> Hi guys!
>
> I have a client web application that uses the Client API to make REST
> calls to a REST business layer.
>
> The javax.ws.rs.client.Client docs clearly states that Client objects
> are expensive to create and dispose, and only a small number of them
> should be created, which makes me think they should be pooled somehow.
>
> Our initial thought was to instantiate and then close every Client
> object we use, making code like this:
>
> public void doSomething() {
> Client client = ClientBuilder.newClient();
> //do a bunch of stuff here
> client.close();
> }
>
> Every method that needs to invoke REST services are coded like the
> example above. That means every time a client web request comes in, a
> new Client object is created and then closed. The exact opposite of
> what the docs advises us to do.
>
> How should we implement a pool of Client objects in this scenario? Is
> there a common solution?
>
> Regards,
> Rodrigo Uchoa.