You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@xml.apache.org by Matthew Forsyth <ma...@bungo.com> on 2002/03/26 19:42:24 UTC
Need Help Returning Literal XML Document as a SOAP response!
Please... i have hit a major roadblock here and could really use some help.
I'd be very grateful.
I am attempting to return a literal xml document as a response part.
So I created a service class and method that would return a
"org.w3c.dom.Element", and registered this service and method. When I sent
my first SOAP request to the server, Apache SOAP correctly located the
service method that I had created.
However, my server does not seem to know how to serialize an Element (seems
like such a trivial thing to get stuck on... sigh). It produces a SOAP
fault:
=========================================
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>java.lang.IllegalArgumentException: No Serializer found to
serialize a 'org.w3c.dom.Element' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.</faultstring>
<faultactor>/cw/soapRpcRouter</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
===============================================
It seems perhaps I need to tell it to use
http://xml.apache.org/xml-soap/literalxml
as the encoding style for the response... which is what I have indicated in
my WSDL document for this service... but how do I tell the Apache Soap
server that this is my intention?
Anyway following the advice of the faq I instead added a Type Mapping to the
service,
telling it to use
org.apache.soap.encoding.literalxml.XMLParameterSerializer
To serialize and deserialize org.w3c.dom.Element...
But this doesn't work either. This serializer seems to actually expect
Parameter objects as opposed to XML Elements... I get the following
exception which in turn produces a server side SOAP Fault:
===============================================
java.lang.ClassCastException: org.apache.xerces.dom.ElementImpl
at
org.apache.soap.encoding.literalxml.XMLParameterSerializer.marshall(XMLParam
eterSerializer.java:85)
at
org.apache.soap.encoding.soapenc.ParameterSerializer.marshall(ParameterSeria
lizer.java:102)
at org.apache.soap.rpc.RPCMessage.marshall(RPCMessage.java:267)
at org.apache.soap.Body.marshall(Body.java:145)
at org.apache.soap.Envelope.marshall(Envelope.java:195)
at
org.apache.soap.providers.RPCJavaProvider.invoke(RPCJavaProvider.java:133)
at
org.apache.soap.server.http.RPCRouterServlet.doPost(RPCRouterServlet.java:28
7)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:201)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:163)
at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1011)
at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106
)
at java.lang.Thread.run(Thread.java:484)