Title: Custom Serialization

I was wondering if anyone could help me with a deserialization problem.
The soap fault  I recieve is the following:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">

 <SOAP-ENV:Body>
  <SOAP-ENV:Fault>
   <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Server.userException</faultcode>
   <faultstring>org.xml.sax.SAXException: Deserializing parameter &apos;arg1&apos;:  could not find deserializer for type urn:Customizer:QueryData</faultstring>

   <detail>
    <ns2:stackTrace xmlns:ns2="http://xml.apache.org/axis/">org.xml.sax.SAXException: Deserializing parameter &apos;arg1&apos;:  could not find deserializer for type urn:Customizer:QueryData&#xd;

        at org.apache.axis.message.RPCHandler.onStartChild(Unknown Source)&#xd;
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(Unknown Source)&#xd;
        at org.apache.axis.message.SAX2EventRecorder.replay(Unknown Source)&#xd;
        at org.apache.axis.message.MessageElement.publishToHandler(Unknown Source)&#xd;
        at org.apache.axis.message.RPCElement.deserialize(Unknown Source)&#xd;
        at org.apache.axis.message.RPCElement.getParams(Unknown Source)&#xd;
        at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown Source)&#xd;
        at org.apache.axis.providers.java.JavaProvider.invoke(Unknown Source)&#xd;
        at org.apache.axis.strategies.InvocationStrategy.visit(Unknown Source)&#xd;
        at org.apache.axis.SimpleChain.doVisiting(Unknown Source)&#xd;
        at org.apache.axis.SimpleChain.invoke(Unknown Source)&#xd;
        at org.apache.axis.server.AxisServer.invoke(Unknown Source)&#xd;
        at org.apache.axis.transport.http.AxisServlet.doPost(Unknown Source)&#xd;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)&#xd;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)&#xd;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)&#xd;
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:577)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)&#xd;
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:577)&#xd;
        at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:575)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)&#xd;
        at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)&#xd;
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:577)&#xd;
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:575)&#xd;
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:171)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:575)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)&#xd;
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:577)&#xd;
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:575)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:483)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)&#xd;
        at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1024)&#xd;
        at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1119)&#xd;
        at java.lang.Thread.run(Thread.java:484)&#xd;
</ns2:stackTrace>
   </detail>
  </SOAP-ENV:Fault>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Here is the soap message that is being sent to the server:

<SOAP-ENV:Envelope xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/'                      xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:SOAP-ENC='http://schemas.xmlsoap.org/soap/encoding/'>

<SOAP-ENV:Body>
        <ns1:processCollection xmlns:ns1='CustomQuery'>
                <arg1 href='#id0'/>
        </ns1:processCollection>
        <multiRef id='id0' SOAP-ENC:root='0' xsi:type='ns2:QueryData' xmlns:ns2='urn:Customizer'>
                <portal xsi:type='xsd:string'>Primary Airfields, AOB</portal>
                <maxResults xsi:type='xsd:int'>20</maxResults>
                <countryCodes xsi:type='SOAP-ENC:Array' SOAP-ENC:arrayType='xsd:string[1]'>
                        <item xsi:type='xsd:string'>AF</item>
                </countryCodes>
        </multiRef>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>"


The following is contained in the server-config.wsdd file:

<service name="CustomQuery" provider="java:RPC">
        <parameter name="allowedMethods" value="*"/>
        <parameter name="className" value="intel.Customizer"/>
        <typeMapping qname="ns1:QueryData" xmlns:ns1="urn:Customizer"
                languageSpecificType="java:intel.QueryData"
                serializer="intel.serialize.QuerySerializer"
                deserializer="intel.serialize.QueryDeSerializer"
                encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</service>

If anything else is needed to debug please let me know.


Ed Erie
Northrup Gruman IT
Conshohocken,Pa 19428


Reply via email to