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> > >
