users@jersey.java.net

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

From: Rodrigo Uchôa <rodrigo.uchoa_at_gmail.com>
Date: Tue, 28 Oct 2014 11:06:38 -0200

Don't take it the wrong way, it was not a critic, just a thought. First one
that came to mind was StringBuffer, and it states right in the beginning
about being thread-safe. Probably why i had this in mind.

On Tue, Oct 28, 2014 at 10:49 AM, Markus Karg <karg_at_quipsy.de> wrote:

> Don’t understand your critics. Isn’t it typical in all JavaDocs to only
> warn about MISSING thread-safety?
>
>
>
> *Von:* Rodrigo Uchôa [mailto:rodrigo.uchoa_at_gmail.com]
> *Gesendet:* Dienstag, 28. Oktober 2014 13:47
>
> *An:* users_at_jersey.java.net
> *Betreff:* [Jersey] Re: Pool for javax.ws.rs.client.Client objects?
>
>
>
> I just find it really weird that if Client objects should be implemented
> in a thread-safe way, this is not explicit in the javadocs. :) But it does
> make things a lot easier if it is.
>
>
>
> On Tue, Oct 28, 2014 at 8:31 AM, Markus Karg <karg_at_quipsy.de> wrote:
>
> FYI: Reuse of objects can also be done on the level of targets and
> invocation templates, a.k.a. Invocation class: You can invoke it several
> times using different values (see
>
> http://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Invocation.html#property(java.lang.String,
> java.lang.Object) and
> http://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Invocation.html#invoke(java.lang.Class)
> ).
>
>
>
> *Von:* Colin Vipurs [mailto:zodiaczx6_at_gmail.com]
> *Gesendet:* Dienstag, 28. Oktober 2014 10:44
> *An:* users_at_jersey.java.net
> *Betreff:* [Jersey] Re: Pool for javax.ws.rs.client.Client objects?
>
>
>
> This is exactly what we do across all our services. You should notice
> quite the performance improvement switching to this as well
>
>
>
> On Tue, Oct 28, 2014 at 9:10 AM, Markus Karg <karg_at_quipsy.de> wrote:
>
> Did you find any official documentation which says that you must not use
> one single client concurrently by different threads? If not, why not just
> using a single instance?
>
>
>
> *Von:* Rodrigo Uchôa [mailto:rodrigo.uchoa_at_gmail.com]
> *Gesendet:* Dienstag, 28. Oktober 2014 00:12
> *An:* users_at_jersey.java.net
> *Betreff:* [Jersey] Pool for javax.ws.rs.client.Client objects?
>
>
>
> 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.
>
>
>
>
>
> --
> Maybe she awoke to see the roommate's boyfriend swinging from the
> chandelier wearing a boar's head.
>
> Something which you, I, and everyone else would call "Tuesday", of course.
>
>
>