Sergey,

Did you get any chance to open a ticket on this issue? This is a blocker
for us.

On Thu, Aug 17, 2017 at 11:36 AM Balakrishna Sudabathula <
[email protected]> wrote:

> Sergey,
>
>   We have not created any client from our side. We are using  jar  file in
> our project which is developed by some other team was implemented this
> functionality. But  in CXF 3.1.8 WebClient, handleResponse method first it
> is calling readEntity which it is closing the entity and later calling
> getEntity which is checking the  entity is closed or not. If it is closed ,
> Entity is not available Exception is throwing.
>
>
> On Thu, Aug 17, 2017 at 12:15 AM, Jose María Zaragoza [via CXF] <
> [email protected]> wrote:
>
>> 2017-08-16 23:18 GMT+02:00 sbalustar <[hidden email]
>> <http:///user/SendEmail.jtp?type=node&node=5782769&i=0>>:
>>
>> > Why because IN CXF 3.1.8 , The Code in the ResponseImpl class is like
>> below
>> >
>> >
>> >     public Object getEntity() {
>> >         return InjectionUtils.getEntity(getActualEntity());
>> >     }
>> >
>> >
>> >   public Object getActualEntity() {
>> >         checkEntityIsClosed();
>> >         return lastEntity != null ? lastEntity : entity;
>> >     }
>> >
>> >   private void checkEntityIsClosed() {
>> >
>> >         if (entityClosed) {
>> >
>> >             throw new IllegalStateException("Entity is not available");
>> >
>> >         }
>> >
>> >     }
>> >
>> >
>> >  public void close() throws ProcessingException {
>> >
>> >         if (!entityClosed) {
>> >
>> >             if (!entityBufferred && entity instanceof InputStream) {
>> >
>> >                 try {
>> >
>> >                     ((InputStream)entity).close();
>> >
>> >                 } catch (IOException ex) {
>> >
>> >                     throw new ResponseProcessingException(this, ex);
>> >
>> >                 }
>> >
>> >             }
>> >
>> >             entity = null;
>> >
>> >             entityClosed = true;
>> >
>> >         }
>> >
>> >
>> >
>> >     }
>>
>>
>>
>> Hi:
>>
>> Sorry for this semi-offtopic, but there is something I don't understand
>>
>> I thought that Response.close() method performed a close in InputStream
>> object
>> associated to the underlying HttpURLConnection object.
>>
>> But I see that Response.close() only closes entity  **if entity is an
>> InputStream**
>> The beginning of the thread was about if it was necessary to close
>> Response instance explicitly.
>>
>> What about if I do
>>
>> Book book = response.readEntity(Book.class)
>>
>> ?
>>
>> Should I close the response object ?
>> I see that autoclose() only is called if class is not InputStream ,
>> but close() required that entity be InputStream
>>
>> I know I'm loosing something ( maybe mixing concepts )
>>
>> Regards
>>
>>
>> > In the readEntity method, there is a call to close() method which the
>> > entityClosed variable value is set to true. When calling the
>> getEntity()
>> > method , there is a another method call checkEntityIsClosed is throwing
>> the
>> > exception because the entityClosed is set to true in readEntity.
>> >
>> >
>> > But In CXF 2.7.7,  there is no method call in the getEntity() method ,
>> > simply it returns the entity
>> >
>> > public Object getEntity() {
>> >         return lastEntity != null ? lastEntity : entity;
>> >     }
>> >
>> >
>> > On Wed, Aug 16, 2017 at 1:58 PM, Sergey Beryozkin [via CXF] <
>> > [hidden email] <http:///user/SendEmail.jtp?type=node&node=5782769&i=1>>
>> wrote:
>> >
>> >> Hi, that will need to be measured for a concrete flow.
>> >> I'm still not sure why you are seeing the failure with the auto close
>> >> being on - it only takes effect after the entity has been consumed...
>> >>
>> >> Sergey
>> >> On 16/08/17 19:03, sbalustar wrote:
>> >>
>> >> > Hi Sergey,
>> >> >
>> >> >     At runtime,  in Debug mode Changed the
>> response.stream.auto.close=false.
>> >>
>> >> > Later on , i am not facing the Entity Not available Exception.
>> >> >
>> >> >    Is there any impact on the performance when we disabled the flag?
>> >> >
>> >> > On Wed, Aug 16, 2017 at 3:32 AM, Sergey Beryozkin [via CXF] <
>> >> > [hidden email] <
>> http:///user/SendEmail.jtp?type=node&node=5782757&i=0>>
>> >> wrote:
>> >> >
>> >> >> Hi
>> >> >>
>> >> >> I don't quite understand what the issue is, does it happen when you
>> >> >> enable "response.stream.auto.close" ? If yes - what happens if you
>> do
>> >> >> not enable this property ?
>> >> >>
>> >> >> CXF does not auto-close the input stream by default given of the
>> few
>> >> >> well-known side-effects.
>> >> >>
>> >> >> Given you have already tried to debug - it is better to set a
>> >> breakpoint
>> >> >> inside org.apache.cxf.jaxrs.impl.ResponseImpl - there you will see
>> why
>> >> >> InputStream is not available in your case
>> >> >>
>> >> >> Cheers, Sergey
>> >> >>
>> >> >> On 15/08/17 23:20, sbalustar wrote:
>> >> >>
>> >> >>> HI sergey, We are upgrading CXF version 2.7.7 to 3.1.8 and facing
>> the
>> >> >> below
>> >> >>> issue.
>> >> >>>
>> >> >>> AUDIT:2017-08-15 11:31:11.047:localhost-startStop-1:"Caused by
>> >> >>> javax.ws.rs.ProcessingException: java.lang.IllegalStateException:
>> >> >> Entity is
>> >> >>> not available
>> >> >>>       at
>> >> >>>
>> org.apache.cxf.jaxrs.client.WebClient.handleResponse(WebClient.java:1141)
>> >>
>> >> >>
>> >> >>>       at
>> org.apache.cxf.jaxrs.client.WebClient.doResponse(WebClient.java:1110)
>> >>
>> >> >>
>> >> >>>       at
>> >> >>>
>> org.apache.cxf.jaxrs.client.WebClient.doChainedInvocation(WebClient.java:1035)
>>
>> >>
>> >> >>
>> >> >>>       at
>> org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:892)
>> >>
>> >> >>
>> >> >>>       at
>> org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:863)
>> >>
>> >> >>
>> >> >>>       at
>> org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:413)
>> >>
>> >> >>
>> >> >>>       at
>> >> >>>
>> com.walmart.platform.soa.client.RestClient.invoke(RestClient.java:261)
>> >>
>> >> >>>    ... 78 more
>> >> >>>
>> >> >>> I have gone through this ticket
>> >> >>> https://issues.apache.org/jira/browse/CXF-5144 which you
>> mentioned
>> >> that
>> >> >> Set
>> >> >>> this property: "response.stream.auto.close" to true. This is done
>> even
>> >> >>> though we are getting the same issue.
>> >> >>>
>> >> >>> When i debug the code, in WebClient.invoke method this exception
>> is
>> >> >> occured.
>> >> >>>
>> >> >>>     protected Response handleResponse(Message outMessage, Class<?>
>> >> >>> responseClass, Type genericType) {
>> >> >>>           try {
>> >> >>>               ResponseBuilder rb = setResponseBuilder(outMessage,
>> >> >>> outMessage.getExchange());
>> >> >>>               Response currentResponse = rb.clone().build();
>> >> >>>
>> ((ResponseImpl)currentResponse).setOutMessage(outMessage);
>> >>
>> >> >>>
>> >> >>>               Object entity = readBody(currentResponse,
>> outMessage,
>> >> >>> responseClass, genericType,
>> >> >>>                                        new Annotation[]{});
>> >> >>>
>> >> >>>               if (entity == null) {
>> >> >>>                   int status = currentResponse.getStatus();
>> >> >>>                   if (status >= 400) {
>> >> >>>                       entity = currentResponse.getEntity();
>> >> >>>                   }
>> >> >>>               }
>> >> >>>               rb = JAXRSUtils.fromResponse(currentResponse);
>> >> >>>
>> >> >>>               rb.entity(entity instanceof Response
>> >> >>>                         ? ((Response)entity).getEntity() :
>> entity);
>> >> >>>
>> >> >>>               Response r = rb.build();
>> >> >>>               getState().setResponse(r);
>> >> >>>               ((ResponseImpl)r).setOutMessage(outMessage);
>> >> >>>               return r;
>> >> >>>           } catch (Throwable ex) {
>> >> >>>               throw (ex instanceof ProcessingException) ?
>> >> >>> (ProcessingException)ex
>> >> >>>                                                     : new
>> >> >>> ProcessingException(ex);
>> >> >>>           } finally {
>> >> >>>
>> >> >>>
>> ClientProviderFactory.getInstance(outMessage).clearThreadLocalProxies();
>> >>
>> >> >>
>> >> >>>           }
>> >> >>>       }
>> >> >>>
>> >> >>>
>> >> >>>     public static ResponseBuilder fromResponse(Response response)
>> {
>> >> >>>           ResponseBuilder rb =
>> toResponseBuilder(response.getStatus());
>> >>
>> >> >>> *        rb.entity(response.getEntity());
>> >> >>> *        for (Map.Entry<String, List&lt;Object>> entry :
>> >> >>> response.getMetadata().entrySet()) {
>> >> >>>               List values = entry.getValue();
>> >> >>>               for (Object value : values) {
>> >> >>>                   rb.header(entry.getKey(), value);
>> >> >>>               }
>> >> >>>           }
>> >> >>>           return rb;
>> >> >>>       }
>> >> >>>
>> >> >>> * rb.entity(response.getEntity());
>> >> >>> * seems like , entity is null in ResponseBuilder rb from the
>> >> >> fromResponse
>> >> >>> method.
>> >> >>>
>> >> >>> Please let me know, what could be the solution to fix this issue?
>> >> >>>
>> >> >>>
>> >> >>>
>> >> >>> --
>> >> >>> View this message in context: http://cxf.547215.n5.nabble.
>> >> >>
>> com/Closing-of-WebClient-and-Response-objects-tp5748134p5782716.html
>> >> >>> Sent from the cxf-user mailing list archive at Nabble.com.
>> >> >>>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> Sergey Beryozkin
>> >> >>
>> >> >> Talend Community Coders
>> >> >> http://coders.talend.com/
>> >> >>
>> >> >>
>> >> >> ------------------------------
>> >> >> If you reply to this email, your message will be added to the
>> >> discussion
>> >> >> below:
>> >> >> http://cxf.547215.n5.nabble.com/Closing-of-WebClient-and-
>> >> Response-objects-
>> >> >> tp5748134p5782725.html
>> >> >> To unsubscribe from Closing of WebClient and Response objects,
>> click
>> >> here
>> >> >> <
>> >> >> .
>> >> >> NAML
>> >> >> <http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?
>> >> macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&
>> >> base=nabble.naml.namespaces.BasicNamespace-nabble.view.
>> >> web.template.NabbleNamespace-nabble.view.web.template.
>> >> NodeNamespace&breadcrumbs=notify_subscribers%21nabble%
>> >> 3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_
>> >> instant_email%21nabble%3Aemail.naml>
>> >> >>
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > View this message in context: http://cxf.547215.n5.nabble.
>> >> com/Closing-of-WebClient-and-Response-objects-tp5748134p5782748.html
>> >> > Sent from the cxf-user mailing list archive at Nabble.com.
>> >> >
>> >>
>> >>
>> >> ------------------------------
>> >> If you reply to this email, your message will be added to the
>> discussion
>> >> below:
>> >>
>> http://cxf.547215.n5.nabble.com/Closing-of-WebClient-and-Response-objects-
>> >> tp5748134p5782757.html
>> >> To unsubscribe from Closing of WebClient and Response objects, click
>> here
>> >> <
>> >> .
>> >> NAML
>> >> <
>> http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>> >>
>> >
>> >
>> >
>> >
>> > --
>> > View this message in context:
>> http://cxf.547215.n5.nabble.com/Closing-of-WebClient-and-Response-objects-tp5748134p5782758.html
>> > Sent from the cxf-user mailing list archive at Nabble.com.
>>
>>
>> ------------------------------
>> If you reply to this email, your message will be added to the discussion
>> below:
>>
>> http://cxf.547215.n5.nabble.com/Closing-of-WebClient-and-Response-objects-tp5748134p5782769.html
>> To unsubscribe from Closing of WebClient and Response objects, click here
>> <http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5748134&code=YnN1ZGFiYXRodWxhQGdtYWlsLmNvbXw1NzQ4MTM0fDEyODI4MTYwNTM=>
>> .
>> NAML
>> <http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
>>
>
>




--
View this message in context: 
http://cxf.547215.n5.nabble.com/Closing-of-WebClient-and-Response-objects-tp5748134p5782871.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to