You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Anjana Fernando (JIRA)" <ji...@apache.org> on 2010/04/22 17:27:50 UTC

[jira] Updated: (AXIS2-4642) ?wsdl query calls out.close() twice, confusing at least some Tomcat connectors

     [ https://issues.apache.org/jira/browse/AXIS2-4642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Anjana Fernando updated AXIS2-4642:
-----------------------------------

    Attachment: Axis2Patch-4642.txt

Hi,

Hereby I'm attaching a patch to fix the issue.

A small description and the rationale for the changes,

I've made changes in "ListingAgent" and "AxisService" classes. In the AxisService class, methods which takes in "OutputStream" instances close the streams before they are returned, which is incorrect. As a general rule of thumb, you should not be closing streaming that you did not create. Because the one who's passing the output stream may have operations left to do with it. where in this case, the OutputStream is the servlet's response. Which we should let the servlet container to close, and we can just do "flush" operations to be sure that the data is written immediately. And in my opinion the flush operations also only need to be done in the method that is actually doing the writing, i.e. "getWSDL" in AxisService class.

Cheers,
Anjana.

> ?wsdl query calls out.close() twice, confusing at least some Tomcat connectors
> ------------------------------------------------------------------------------
>
>                 Key: AXIS2-4642
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4642
>             Project: Axis2
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.5.1
>         Environment: Axis2.war deployed in Tomcat 6.0.24, using ajp to jk isapi_redirect to IIS on Windows Server 2008.
>            Reporter: Bruce G Stewart
>            Priority: Minor
>         Attachments: Axis2Patch-4642.txt
>
>
> AxisService.getWSDL()  sends the response body for a ..service?wsdl query, then calls .flush() and .close() for its output stream. Upon return, ListingAgent.processListService() calls .flush() and .close() again for the same stream. 
> The second close() interferes with the next request on the intermediate ajp connector socket.
> I don't know whether calling close() twice should be harmless but, in this case, it is not.
> [edit: Actually, the 2nd close() is harmelss. It's the flush() coming after the 1st close() that seems to be the problem.]

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org