[
https://issues.apache.org/jira/browse/CXF-6427?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14568584#comment-14568584
]
Petr Miko commented on CXF-6427:
--------------------------------
But this is not the case as far as I am aware - this is about serialized
object, whose inputStream is not being closed in mentioned method due to, IMO
incorrect condition. *InputStream inputStream = (InputStream)r.getEntity();*
this stream. The point of this issue is, that if received message IS NOT
InputStream, please do close the stream used to read the message in
AbstractClient.
> Incorrect Response InputStream closing in AbstractClient
> --------------------------------------------------------
>
> Key: CXF-6427
> URL: https://issues.apache.org/jira/browse/CXF-6427
> Project: CXF
> Issue Type: Bug
> Affects Versions: 2.7.16
> Reporter: Petr Miko
> Assignee: Sergey Beryozkin
> Fix For: Invalid
>
>
> In current implementation of _org.apache.cxf.jaxrs.client.AbstractClient_ is
> response body input stream closed in following method
> {noformat}
> protected boolean responseStreamCanBeClosed(Message outMessage, Class<?>
> cls) {
> return cls != InputStream.class
> &&
> MessageUtils.isTrue(outMessage.getContextualProperty("response.stream.auto.close"));
> }
> {noformat}
> That means, that in case that if the _response.stream.auto.close_ is not set
> to true, the input stream stays opened -> Socket is not free for reusing.
> In my opinion the proper implementation should be:
> {noformat}
> protected boolean responseStreamCanBeClosed(Message outMessage, Class<?>
> cls) {
> return !cls.isAssignableFrom(InputStream.class) ||
> MessageUtils.isTrue(outMessage.getContextualProperty("response.stream.auto.close"));
> }
> {noformat}
> This way is the response body input stream:
> * is closed even when the auto close property is not set (= default?) and cls
> is not a child of InputStream
> * the input stream is not closed, if cls is child of InputStream class (do
> not know if there might be cases of its subclasses) and the auto close
> property is not set to true
> * the auto close property still can over-rule the fact that the cls is
> assignable from InputStream
> The current implementation is in my opinion incorrect, because in case of a
> lot quick/parallel requests over proxy clients we faced running out of
> Sockets - similarly to what is described in CXF-5144
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)