I've just found out that everything works fine if I set the sendMultiRefs parameter to false in server-config.wsdd.

<globalConfiguration>
...
<parameter name="sendMultiRefs" value="false"/>
...
</globalConfiguration>



Lubomir ILanovsky wrote:
hi,

I have a web service which should return an array of complex-types. But it does not work properly.

My complex type looks like this:

public class UctovnyZapisDTO {
    int id;
    String doklad;
    float suma;
    ...
}
Fields are of type int, float and String only.

Type mapping in WSdeploy.wssd:
<typeMapping
xmlns:ns="http://DefaultNamespace";
qname="ns:UctovnyZapisDTO"
type="java:generated.UctovnyZapisDTO"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />


<typeMapping
        xmlns:ns="urn:UctovnyDennik"
        qname="ns:ArrayOf_tns1_UctovnyZapisDTO"
        type="java:generated.UctovnyZapisDTO[]"

serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; />


When I run my client against this WS I get an exception:

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/}stackTrace:org.xml.sax.SAXException: SimpleDeserializer encountered a child element
, which is NOT expected, in something it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:143)


at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1031)

at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)

at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)

at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)

at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)

at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)

at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)

at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:386)
at org.apache.axis.client.Call.invoke(Call.java:2402)
at org.apache.axis.client.Call.invoke(Call.java:2301)
at org.apache.axis.client.Call.invoke(Call.java:1758)
at generated.UctovnyDennikWSSoapBindingStub.uctovneZaznamy(UctovnyDennikWSSoapBindingStub.java:149)


        at Client.main(Client.java:12)

        {http://xml.apache.org/axis/}hostname:Berlin

org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was try
ing to deserialize.
at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
at org.apache.axis.client.Call.invoke(Call.java:2405)
at org.apache.axis.client.Call.invoke(Call.java:2301)
at org.apache.axis.client.Call.invoke(Call.java:1758)
at generated.UctovnyDennikWSSoapBindingStub.uctovneZaznamy(UctovnyDennikWSSoapBindingStub.java:149)


at Client.main(Client.java:12)
Caused by: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something
it was trying to deserialize.
at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:143)


at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1031)

at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)

at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)

at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)

at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1044)

at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)

at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1140)

at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:238)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:386)
at org.apache.axis.client.Call.invoke(Call.java:2402)
... 4 more


Interesting is that I do not get this exception in case that web service returns array with only one object in it or in case when the array contains only copies of the same object.

Does anybody know what may be wrong?

thanks

Reply via email to