[
http://jira.codehaus.org/browse/XFIRE-934?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_91771
]
Tom Lambrechts commented on XFIRE-934:
--------------------------------------
This is probably because the ArrayType does a close of the writer when writing
the parameter value.
protected void writeValue(Object value,
MessageWriter writer,
MessageContext context,
Type type,
String name,
String ns)
throws XFireFault
{
type = AegisBindingProvider.getWriteType(context, value, type);
MessageWriter cwriter;
if (type.isWriteOuter()) {
cwriter = writer.getElementWriter(name, ns);
} else {
cwriter = writer;
}
if (value==null && type.isNillable())
cwriter.writeXsiNil();
else
type.writeObject( value, cwriter, context );
//TODO bug report
// cwriter.close();
}
This causes the 'out' element to be closed. This is the root cause of the issue.
> Soap error occures when using collection/array as return type
> -------------------------------------------------------------
>
> Key: XFIRE-934
> URL: http://jira.codehaus.org/browse/XFIRE-934
> Project: XFire
> Issue Type: Sub-task
> Components: JAXB 2.0
> Environment: Trunk version
> Using JAXB2.0 and org.codehaus.xfire.jaxws.JAXWSServiceFactory
> Reporter: Tom Lambrechts
> Assigned To: Dan Diephouse
> Priority: Critical
>
> When using an array as return type the following error occures:
> org.codehaus.xfire.handler.DefaultFaultHandler > Fault occurred!
> 07/04/02 11:11:24.162, SocketListener0-1,
> org.codehaus.xfire.handler.DefaultFaultHandler.invoke(DefaultFaultHandler.java:39)
> Throwable: javax.xml.stream.XMLStreamException: No open start element,
> when trying to write end element
> at
> com.ctc.wstx.sw.BaseStreamWriter.throwOutputError(BaseStreamWriter.java:1413)
> at
> com.ctc.wstx.sw.BaseStreamWriter.reportNwfStructure(BaseStreamWriter.java:1442)
> at
> com.ctc.wstx.sw.BaseNsStreamWriter.doWriteEndTag(BaseNsStreamWriter.java:528)
> at
> com.ctc.wstx.sw.BaseNsStreamWriter.writeEndElement(BaseNsStreamWriter.java:281)
> at
> org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:83)
> at
> org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:56)
> at
> org.codehaus.xfire.transport.http.XFireServletChannel.sendViaServlet(XFireServletChannel.java:87)
> at
> org.codehaus.xfire.transport.http.XFireServletChannel.send(XFireServletChannel.java:44)
> at
> org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
> at
> org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
> at
> org.codehaus.xfire.service.binding.PostInvocationHandler.invoke(PostInvocationHandler.java:36)
> at
> org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
> at
> org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:64)
> at
> org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
> at
> org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:304)
> at
> org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:129)
> at
> org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.java:116)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
> at
> org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:654)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:556)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1563)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1515)
> at org.mortbay.http.HttpServer.service(HttpServer.java:956)
> at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
> at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
> at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
> at
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> This returns the following (corrupt) soap message:
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soap:Body>
> <getObjectArrayResponse
> xmlns="http://list.xfire.ws.soa.util.telindus.be">
> <out xmlns="http://list.xfire.ws.soa.util.telindus.be">
> <MyObject
> xmlns="http://list.xfire.ws.soa.util.telindus.be">
> <description>description</description>
> </MyObject>
> <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soap:Body>
> <soap:Fault>
>
> <faultcode>soap:Server</faultcode>
> <faultstring>Couldn't
> write message.</faultstring>
> </soap:Fault>
> </soap:Body>
> </soap:Envelope>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email