Thanks, Anne.

I looked up similar examples and found they had used NMTOKEN, but I had doubts about that (wasn't sure why the examples I'd seen had used it) and have since changed it back to string. I tried separating out the pos bit (see below for the change) in the hope that it might be a namespace problem and this would solve it - but it didn't. I'm inferring from your comments about the accuracy of the wsdl and the soap messages that it's more of a deserialization problem at the server end, after the message has been received, and not that the wsdl is somehow badly expressed, even though it's accurate?

Madeleine

<?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:simpleType name="posType">
<xs:restriction base="xs:string">
<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: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" type="ns0:posType" nillable="false">
</xs:element>
</xs:sequence>
</xs:complexType>



Anne Thomas Manes wrote:
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