Apache Axis and deserializing problem
I�ve developed a webservices client, generating code from the wsdl of the service provider, using WSDL2Java utility and Axis1.4.
The strange fact is that now I notice two different behaviours if I change the endpoint url of my client.
With one service provider, the custumer�s test environment, everything works well, but when I switch the endpoint to another custumer�s installation of the same application (of course) I receive this error:
15:24:24,653 ERROR [Call] Exception:
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:145)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:369)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1048)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
I can imagine, from the log that the problem is about the SimpleDeserialize that is not able to deserialize one complex type returned by the service provider.
But why the same client is able to deserialize it when I launch it against the other endpoint, where the webservice response is the same??
This sounds me very strange !!!!!
Anyway, how can I tell axis, in the stub class, to use a good deserializer for complex types ?
Thanks a lot.
Max