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

Jason Kania updated AXIS2-3007:
-------------------------------


I am using axis in an embedded servlet and the configuration is coming from the 
default axis2.xml from within the kernel jar file with some programmatic 
overrides of settings in code.

This means that one of two problems is likely; I am modifying content type 
inadvertantly or the act of enabling REST is not sufficient to properly set the 
content type. From looking at the Axis code, I have not seen an explicit way to 
set the content type so having the wrong content type would be a side effect of 
something I am doing if enabling REST is working as expected. The content type 
is determined from other attributes and never explicitly set. Correct me if I 
am wrong.

I am also wondering if it might be caused by a content-type header being set in 
the GET method in which case this error should be caught beforehand, either 
lower in Axis2 or by the web server.

I will investigate further, but if there are some areas of code to look into 
for changes in content type, I would appreciate direction.

> RESTful services invocation self induces Input Stream Closed error
> ------------------------------------------------------------------
>
>                 Key: AXIS2-3007
>                 URL: https://issues.apache.org/jira/browse/AXIS2-3007
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>    Affects Versions: 1.2
>         Environment: Windows 2000, Eclipse IDE
>            Reporter: Jason Kania
>            Assignee: Keith Godwin Chapman
>
> When making REST GET calls to an API, Axis 2 core sets its input stream to 
> null and then complains later that its stream has been closed. The following 
> partial stack trace demonstrates the problem.
> ApplicationXMLBuilder.processDocument(InputStream, String, MessageContext) 
> line: 49   
> TransportUtils.createSOAPMessage(MessageContext, InputStream, String) line: 
> 130       
> RESTUtil.processURLRequest(MessageContext, OutputStream, String) line: 98     
> AxisServlet$ProcessRESTRequest.processURLRequest() line: 776  
> AxisServlet.doGet(HttpServletRequest, HttpServletResponse) line: 238  
> AxisServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse) 
> line: 707   
> AxisServlet(HttpServlet).service(ServletRequest, ServletResponse) line: 820   
> ServletHolder.handle(ServletRequest, ServletResponse) line: 487       
> ...
> In RESTUtil, method processURLRequest, the following call is made on line 98
>                 soapEnvelope = TransportUtils
>                         .createSOAPMessage(msgContext, null, contentType);
> where the null is supposed to be the input stream
> Thus, when line 49 of ApplicationXMLBuilder in method processDocument is 
> encountered,
>             PushbackInputStream pushbackInputStream = new 
> PushbackInputStream(inputStream);
> where inputStream is null,
> the exception "java.io.IOException: Stream closed" is generated once the 
> empty stream is read at line 51
> of ApplicationXMLBuilder:
>            if ((b = pushbackInputStream.read()) > 0) {
> For straight Axis use, this issue is a blocker, but I have worked around the 
> problem by filtering empty get methods at the servlet level and am populating 
> them with content for now.

-- 
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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to