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