Hi,
I have a problem with the Axis serializer/deserilaizer. Perhaps this is an
offtopic item, but it would be very nice if someone can give any useful hints.
That's what I wanna to do:
I want to transfer statistical reports via SOAP. This several reports vary in
the amount of columns and - that's the problem - they vary in the column data
types (eg report A, column 1 is a string; report B, column 1 is an integer;
...).
That's what I have done:
First I declare the data type for the column values in the WSDL with 'anyType'
and set the 'real' data type of the column at runtime to 'string', 'integer',
'float' or 'date'. This works on several clients (JAX-WS, C#, PHP...) but not
on Axis 1.4 (see error message below).
I want to know, if there is a better solution to declare and handle varying
data types in a data table transferred via SOAP. What I have to declare in the
WSDL and what kind of type I have to set at runtime?
Bye Juergen
Axis error message:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException [^]
faultSubcode:
faultString: org.xml.sax.SAXException: No deserializer for string
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: [^] No
deserializer for string
at
org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:314)
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.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:2448)
at org.apache.axis.client.Call.invoke(Call.java:2347)
at org.apache.axis.client.Call.invoke(Call.java:1804)