The WSDL appears to be valid, and the SOAP message matches the WSDL
description. (The SOAP Body contains only one child element,
<storeEntryInDB>, which in turn contains one child element, <de>,
which in turn contains three child elements, <headword>, <plural>, and
<pos>.)

Is there a reason why you've defined <pos> as a restriction of NMTOKEN
rather than of string?

Anne

On Mar 31, 2005 12:30 PM, MKW <[EMAIL PROTECTED]> wrote:
> I've got the following Server.userException exception I don't know how
> to handle because I'm not sure what's caused it:
> "org.xml.sax.SAXException: SimpleDeserializer encountered a child
> element, which is NOT expected, in something it was trying to
> deserialize".  I'm assuming it was a fault in the request message caused
> by the fact that it is actually sending 3 child elements (as parts of
> the DictEntry) rather than the one-liner (DictEntry) that the wsdl
> states?? The return message was only a string so I doubt that was the
> problem?? If that is the case, can't the deserializing mechanism see
> that there are 3 child parts to it from the schema type definition? Do I
> need to include all the child elements at each stage???
> 
> I mostly hand-coded the wsdl (which I've checked is valid) and have just
> tested it with soap messages.
> 
> I've attached the wsdl at the end.
> 
> I sent this SOAP message:
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
>   <SOAP-ENV:Header/>
>      <SOAP-ENV:Body>
>          <storeEntryInDB xmlns="http://dct/types";>
>              <de xmlns="">
>                  <headword>dance</headword>
>                  <plural>dances</plural>
>                  <pos>noun</pos>
>              </de>
>          </storeEntryInDB>
>      </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> 
> and got back this SOAP response:
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
>      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>      <soapenv:Body>
>          <soapenv:Fault>
>              <faultcode>soapenv:Server.userException</faultcode>
>              <faultstring>org.xml.sax.SAXException: SimpleDeserializer
> encountered a child element,
>                  which is NOT expected, in something it was trying to
> deserialize.</faultstring>
>              <detail>
>                  <ns1:hostname
> xmlns:ns1="http://xml.apache.org/axis/";>Mad</ns1:hostname>
>              </detail>
>          </soapenv:Fault>
>      </soapenv:Body>
> </soapenv:Envelope>
> 
> Thanks.
> Madeleine
> 
> The wsdl:
> <?xml version="1.0" encoding="UTF-8"?>
> <wsdl:definitions xmlns:ns0="http://dct/types"; xmlns:ns1="http://dct";
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; targetNamespace="http://dct";>
> <wsdl:types>
>   <xs:schema targetNamespace="http://dct/types";
> xmlns="http://www.w3.org/2001/XMLSchema";>
>   <xs:complexType name="DictEntry">
>     <xs:sequence>
>      <xs:element name="headword" type="xs:string" nillable="false"/>
>      <xs:element name="plural" type="xs:string" nillable="false"/>
>      <xs:element name="pos" nillable="false">
>       <xs:simpleType>
>        <xs:restriction base="xs:NMTOKEN">
>         <xs:enumeration value="noun"/>
>         <xs:enumeration value="verb"/>
>         <xs:enumeration value="adjective"/>
>         <xs:enumeration value="adverb"/>
>         <xs:enumeration value="article"/>
>         <xs:enumeration value="preposition"/>
>        </xs:restriction>
>       </xs:simpleType>
>      </xs:element>
>     </xs:sequence>
>    </xs:complexType>
>    <xs:element name="storeEntryInDB">
>     <xs:complexType>
>      <xs:sequence>
>       <xs:element name="de" type="ns0:DictEntry"/>
>      </xs:sequence>
>     </xs:complexType>
>    </xs:element>
>   <xs:element name="storeEntryInDBResponse">
>   <xs:complexType>
>    <xs:sequence>
>     <xs:element name="storeEntryInDBReturn" type="xs:string"/>
>    </xs:sequence>
>   </xs:complexType>
>   </xs:element>
>   <xs:element name="returnEntry">
> <xs:complexType>
>   <xs:sequence>
>    <xs:element name="hw" type="xs:string"/>
>   </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="returnEntryResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="returnEntryReturn" type="ns0:DictEntry"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="storeMultiple">
> <xs:complexType>
> <xs:sequence>
> <xs:element maxOccurs="unbounded" name="de" type="ns0:DictEntry"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="storeMultipleResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="storeMultipleReturn" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="returnMultiple">
> <xs:complexType>
> <xs:sequence>
> <xs:element maxOccurs="unbounded" name="hw" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="returnMultipleResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element maxOccurs="unbounded" name="returnMultipleReturn"
> type="ns0:DictEntry"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="storeEntryInDBRequest">
> <wsdl:part name="parameters" element="ns0:storeEntryInDB"/>
> </wsdl:message>
> <wsdl:message name="storeEntryInDBResponse">
> <wsdl:part name="parameters" element="ns0:storeEntryInDBResponse"/>
> </wsdl:message>
> <wsdl:message name="storeMultipleRequest">
> <wsdl:part name="parameters" element="ns0:storeMultiple"/>
> </wsdl:message>
> <wsdl:message name="storeMultipleResponse">
> <wsdl:part name="parameters" element="ns0:storeMultipleResponse"/>
> </wsdl:message>
> <wsdl:message name="returnEntryRequest">
> <wsdl:part name="parameters" element="ns0:returnEntry"/>
> </wsdl:message>
> <wsdl:message name="returnEntryResponse">
> <wsdl:part name="parameters" element="ns0:returnEntryResponse"/>
> </wsdl:message>
> <wsdl:message name="returnMultipleRequest">
> <wsdl:part name="parameters" element="ns0:returnMultiple"/>
> </wsdl:message>
> <wsdl:message name="returnMultipleResponse">
> <wsdl:part name="parameters" element="ns0:returnMultipleResponse"/>
> </wsdl:message>
> <wsdl:portType name="DictService">
> <wsdl:operation name="storeEntryInDB">
> <wsdl:input name="storeEntryInDBRequest"
> message="ns1:storeEntryInDBRequest"/>
> <wsdl:output name="storeEntryInDBResponse"
> message="ns1:storeEntryInDBResponse"/>
> </wsdl:operation>
> <wsdl:operation name="returnEntry">
> <wsdl:input name="returnEntryRequest" message="ns1:returnEntryRequest"/>
> <wsdl:output name="returnEntryResponse" message="ns1:returnEntryResponse"/>
> </wsdl:operation>
> <wsdl:operation name="storeMultiple">
> <wsdl:input name="storeMultipleRequest" message="ns1:storeMultipleRequest"/>
> <wsdl:output name="storeMultipleResponse"
> message="ns1:storeMultipleResponse"/>
> </wsdl:operation>
> <wsdl:operation name="returnMultiple">
> <wsdl:input name="returnMultipleRequest"
> message="ns1:returnMultipleRequest"/>
> <wsdl:output name="returnMultipleResponse"
> message="ns1:returnMultipleResponse"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="DictServiceImplSoapBinding" type="ns1:DictService">
> <wsdlsoap:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="storeEntryInDB">
>   <wsdlsoap:operation soapAction=""/>
> <wsdlsoap:operation/>
> <wsdl:input>
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="returnEntry">
>    <wsdlsoap:operation soapAction=""/>
> <wsdlsoap:operation/>
> <wsdl:input>
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="storeMultiple">
>   <wsdlsoap:operation soapAction=""/>
> <wsdlsoap:operation/>
> <wsdl:input>
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> <wsdl:operation name="returnMultiple">
>   <wsdlsoap:operation soapAction=""/>
> <wsdlsoap:operation/>
> <wsdl:input>
> <wsdlsoap:body use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <wsdlsoap:body use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="DictServiceImpl">
> <wsdl:port name="DictService" binding="ns1:DictServiceImplSoapBinding">
> <wsdlsoap:address
> location="http://localhost:8080/axis/services/DictServiceImpl"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
> 
>

Reply via email to