Hi Sergey,
thanks for looking into this.
I will do some checks.
But just on looking at the change you did let me ask this:
now using the weak-reference the close will only be called on some of the
WebClients (those which are not yet GCed), right? Does this make sense?

Hartmut

2014-10-28 13:46 GMT+01:00 Sergey Beryozkin <[email protected]>:

> Hi
>
> I updated ClientImpl to use WeakHashMap, see
>
> https://issues.apache.org/jira/browse/CXF-6066
> and
> http://git-wip-us.apache.org/repos/asf/cxf/commit/c9e85e76
>
> Can you please experiment with 3.0.3-SNAPSHOT a bit later on just to
> confirm the issue has gone away ?
>
> Thanks, Sergey
>
> On 28/10/14 11:22, Sergey Beryozkin wrote:
>
>> Hi
>>
>> I left right after I replied, sorry for a delay...
>> I'm going to deal with this issue right now
>>
>> Thanks, Sergey
>> On 23/10/14 11:26, Hartmut Lang wrote:
>>
>>> Hi,
>>> thanks for your response.
>>> Should i open an issue for this?
>>>
>>> Hartmut
>>>
>>> 2014-10-23 10:43 GMT+02:00 Sergey Beryozkin <[email protected]>:
>>>
>>>  Hi
>>>> On 23/10/14 08:41, Hartmut Lang wrote:
>>>>
>>>>  Hi,
>>>>>
>>>>> my question is how i can reuse (or not) the WebTarget of a JaxRs Client
>>>>> with CXF 3.0.2.
>>>>>
>>>>> My scenario is roughly like this:
>>>>>
>>>>> Init:
>>>>> Client client = ClientBuilder.newBuilder().
>>>>>                   register(JacksonJsonProvider.class).
>>>>>                   build();
>>>>> WebTarget target = client.target(baseUrl).path("
>>>>> lights/{lightNum}/{state}");
>>>>>
>>>>>
>>>>> Then i issue several (thousands) requests like this:
>>>>>
>>>>> Invocation.Builder builder = target.
>>>>>                   resolveTemplate("lightNum", lightNum).
>>>>>                   resolveTemplate("state", state).
>>>>>                   request();
>>>>> Response response = builder.put(null);
>>>>> response.close();
>>>>>
>>>>> What i see is, that for every request a new WebClient-Object is created
>>>>> and
>>>>> added to
>>>>> ClientImpl.baseClients-HashMap.
>>>>> And finally i can run into OOM-issues.
>>>>>
>>>>>  Right, that was the quick implementation to support the Client.close()
>>>> docs saying:
>>>>
>>>> "Calling this method effectively invalidates all resource targets
>>>> produced
>>>> by the client instance. Invoking any method on such targets once the
>>>> client
>>>> is closed would result in an IllegalStateException being thrown."
>>>>
>>>> To be honest the fact most of WebTarget methods create new WebTargets
>>>> may
>>>> indeed lead to some unexpected results, though in this case the bug
>>>> is in
>>>> the CXF code, i.e, I guess it has to be a WeakHashMap, I'll take care
>>>> of it
>>>> next week as I'm off shortly...
>>>>
>>>>
>>>>> My question:
>>>>> - is it ok to reuse the WebTarget for several requests?
>>>>>
>>>>>
>>>> I guess for now it is better to reuse for a small number of requests
>>>>
>>>>   - if i close the client and create a new one, this solves this
>>>> issue. Is
>>>>
>>>>> this the intended live-cycle of Client/WebTarget?
>>>>>
>>>>>
>>>> yes, this is my understanding.
>>>>
>>>> Thanks, Sergey
>>>>
>>>>
>>>>> Thanks,
>>>>> Hartmut
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>
> Blog: http://sberyozkin.blogspot.com
>

Reply via email to