You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Dan Tenenbaum <dt...@systemsbiology.net> on 2006/12/02 02:26:32 UTC

error: SimpleDeserializer encountered a child element

Hi, I know this is a common error but there doesn't seem to be a common 
solution to the problem. I hope someone can help me with this. I have  
simple WSDL (see below) that was written by hand and then I used 
WSDL2Java (axis 1)  to generate server and client stubs.
I wrote client and server code to call and implement all the methods, 
and they all work except for getDemoObjectArray() which causes a fault 
(see below).

It has to be something simple, because I can call getDemoObject(), it's 
just trying to get back an array of DemoObjects that fails.

Here is the client code:
            DemoObject[] dobjs = new DemoObject[2];
            dobjs[0] = new DemoObject("test0", 777, 0.9876f);
            dobjs[1] = new DemoObject("test1", 888, 7.77776f);
            DemoObject[] demoObjectArrayResponse = 
port.getDemoObjectArray(dobjs);
            System.out.println("Response for getDemoObjectArray: ");
            for (DemoObject obj : demoObjectArrayResponse) {
                System.out.println("\t" + demoObjectToString(obj));
            }

Here is the server code, just returns what you pass it:
    public DemoObject[] getDemoObjectArray(DemoObject[] inparameters) 
throws java.rmi.RemoteException {
        return inparameters;
    }

Hope someone can help...thanks.

Fault:
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: org.xml.sax.SAXException: SimpleDeserializer encountered a 
child element, which is NOT expected, in something it was trying to 
deserialize.
 faultActor:
 faultNode:
 faultDetail:
    {http://xml.apache.org/axis/}hostname:tapatio.systemsbiology.net

org.xml.sax.SAXException: SimpleDeserializer encountered a child 
element, which is NOT expected, in something it was trying to deserialize.
    at 
org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
    at 
org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
    at 
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
    at org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
    at 
org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1550)
    at 
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1149)
    at 
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
    at 
org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
    at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
    at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
    at 
org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at 
org.systemsbiology.DemoSoapBindingStub.getDemoObjectArray(DemoSoapBindingStub.java:566)
    at client.Client.main(Client.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

WSDL:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://systemsbiology.org" 
xmlns:impl="http://systemsbiology.org"
                  xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:tns1="http://localhost/Demo">

    <wsdl:types>
        <xsd:schema elementFormDefault="qualified" 
targetNamespace="http://systemsbiology.org">

            <xsd:complexType name="DemoObject">
                <xsd:sequence>
                    <xsd:element name="demoString" type="xsd:string"/>
                    <xsd:element name="demoInt" type="xsd:int"/>
                    <xsd:element name="demoFloat" type="xsd:float"/>
                </xsd:sequence>
            </xsd:complexType>


            <xsd:complexType name="ArrayOfDemoObject">
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" 
name="string" nillable="true"
                                 type="impl:DemoObject"/>
                </xsd:sequence>
            </xsd:complexType>


            <xsd:complexType name="ArrayOfFloat">
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" 
name="string" nillable="true" type="xsd:float"/>
                </xsd:sequence>
            </xsd:complexType>


            <xsd:complexType name="ArrayOfString">
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" 
name="string" nillable="true" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="ArrayOfInt">
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" 
name="string" nillable="true" type="xsd:int"/>
                </xsd:sequence>
            </xsd:complexType>

            <xsd:element name="getStringRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getStringRequest" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getStringResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getStringResponse" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getStringArrayRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="unbound" 
name="getStringArrayRequest"
                                     type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getStringArrayResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="unbound" 
name="getStringArrayResponse"
                                     type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:element name="getDemoObjectRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getDemoObjectRequest" type="impl:DemoObject"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getDemoObjectResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getDemoObjectResponse" type="impl:DemoObject"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getDemoObjectArrayRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="unbound" 
nillable="false" name="getDemoObjectArrayRequest"
                                     type="impl:DemoObject"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getDemoObjectArrayResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="unbound" 
name="getDemoObjectArrayResponse"
                                     type="impl:DemoObject"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:element name="getFloatRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getFloatRequest" type="xsd:float"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getFloatResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getFloatResponse" type="xsd:float"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getFloatArrayRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getFloatArrayRequest" type="impl:ArrayOfFloat"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getFloatArrayResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getFloatArrayResponse" type="impl:ArrayOfFloat"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:element name="getIntRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getIntRequest" type="xsd:int"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getIntResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getIntResponse" type="xsd:int"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getIntArrayRequest">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getIntArrayRequest" type="impl:ArrayOfInt"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="getIntArrayResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" maxOccurs="1" 
name="getIntArrayResponse" type="impl:ArrayOfInt"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

        </xsd:schema>
    </wsdl:types>

    <wsdl:message name="getStringRequest">
        <wsdl:part name="inparameters" element="impl:getStringRequest"/>
    </wsdl:message>

    <wsdl:message name="getStringResponse">
        <wsdl:part name="outparameters" element="impl:getStringResponse"/>
    </wsdl:message>

    <wsdl:message name="getStringArrayRequest">
        <wsdl:part name="inparameters" 
element="impl:getStringArrayRequest"/>
    </wsdl:message>

    <wsdl:message name="getStringArrayResponse">
        <wsdl:part name="outparameters" 
element="impl:getStringArrayResponse"/>
    </wsdl:message>


    <wsdl:message name="getDemoObjectRequest">
        <wsdl:part name="inparameters" element="impl:getDemoObjectRequest"/>
    </wsdl:message>

    <wsdl:message name="getDemoObjectResponse">
        <wsdl:part name="outparameters" 
element="impl:getDemoObjectResponse"/>
    </wsdl:message>

    <wsdl:message name="getDemoObjectArrayRequest">
        <wsdl:part name="inparameters" 
element="impl:getDemoObjectArrayRequest"/>
    </wsdl:message>

    <wsdl:message name="getDemoObjectArrayResponse">
        <wsdl:part name="outparameters" 
element="impl:getDemoObjectArrayResponse"/>
    </wsdl:message>


    <wsdl:message name="getIntRequest">
        <wsdl:part name="inparameters" element="impl:getIntRequest"/>
    </wsdl:message>

    <wsdl:message name="getIntResponse">
        <wsdl:part name="outparameters" element="impl:getIntResponse"/>
    </wsdl:message>

    <wsdl:message name="getIntArrayRequest">
        <wsdl:part name="inparameters" element="impl:getIntArrayRequest"/>
    </wsdl:message>

    <wsdl:message name="getIntArrayResponse">
        <wsdl:part name="outparameters" element="impl:getIntArrayResponse"/>
    </wsdl:message>


    <wsdl:message name="getFloatRequest">
        <wsdl:part name="inparameters" element="impl:getFloatRequest"/>
    </wsdl:message>

    <wsdl:message name="getFloatResponse">
        <wsdl:part name="outparameters" element="impl:getFloatResponse"/>
    </wsdl:message>

    <wsdl:message name="getFloatArrayRequest">
        <wsdl:part name="inparameters" element="impl:getFloatArrayRequest"/>
    </wsdl:message>

    <wsdl:message name="getFloatArrayResponse">
        <wsdl:part name="outparameters" 
element="impl:getFloatArrayResponse"/>
    </wsdl:message>


    <wsdl:portType name="DemoHandler">
        <wsdl:operation name="getString">
            <wsdl:documentation>returns an xml encoded 
string</wsdl:documentation>
            <wsdl:input message="impl:getStringRequest"/>
            <wsdl:output message="impl:getStringResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getStringArray">
            <wsdl:documentation>returns an xml encoded string 
array</wsdl:documentation>
            <wsdl:input message="impl:getStringArrayRequest"/>
            <wsdl:output message="impl:getStringArrayResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getInt">
            <wsdl:documentation>returns an xml encoded 
int</wsdl:documentation>
            <wsdl:input message="impl:getIntRequest"/>
            <wsdl:output message="impl:getIntResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getIntArray">
            <wsdl:documentation>returns an xml encoded int 
array</wsdl:documentation>
            <wsdl:input message="impl:getIntArrayRequest"/>
            <wsdl:output message="impl:getIntArrayResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getFloat">
            <wsdl:documentation>returns an xml encoded 
float</wsdl:documentation>
            <wsdl:input message="impl:getFloatRequest"/>
            <wsdl:output message="impl:getFloatResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getFloatArray">
            <wsdl:documentation>returns an xml encoded float 
array</wsdl:documentation>
            <wsdl:input message="impl:getFloatArrayRequest"/>
            <wsdl:output message="impl:getFloatArrayResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getDemoObject">
            <wsdl:documentation>returns an xml encoded 
DemoObject</wsdl:documentation>
            <wsdl:input message="impl:getDemoObjectRequest"/>
            <wsdl:output message="impl:getDemoObjectResponse"/>
        </wsdl:operation>
        <wsdl:operation name="getDemoObjectArray">
            <wsdl:documentation>returns an xml encoded DemoObject 
array</wsdl:documentation>
            <wsdl:input message="impl:getDemoObjectArrayRequest"/>
            <wsdl:output message="impl:getDemoObjectArrayResponse"/>
        </wsdl:operation>


    </wsdl:portType>

    <wsdl:binding name="DemoSoapBinding" type="impl:DemoHandler">
        <wsdlsoap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="getString">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getString"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="getStringArray">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getStringArray"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>

        <wsdl:operation name="getFloat">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getFloat" 
style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="getFloatArray">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getFloatArray"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>


        <wsdl:operation name="getDemoObject">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getDemoObject"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="getDemoObjectArray">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getDemoObjectArray"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>


        <wsdl:operation name="getInt">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getInt" 
style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
        <wsdl:operation name="getIntArray">
            <wsdlsoap:operation 
soapAction="http://tapatio.systemsbiology.net:8080/services/getIntArray"
                                style="document"/>
            <wsdl:input>
                <wsdlsoap:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
                <wsdlsoap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>


    </wsdl:binding>

    <wsdl:service name="DemoHandlerService">
        <wsdl:port binding="impl:DemoSoapBinding" name="Demo">
            <wsdlsoap:address 
location="http://tapatio.systemsbiology.net:8080/services/Demo"/>
        </wsdl:port>
    </wsdl:service>

</wsdl:definitions>


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