Serialization/deserialization problems
You can use information and example provided here to know more about Serialization/deserialization problems.
By default all complex types are serialized/deserialized by Axis' org.apache.axis.encoding.ser.BeanSerializer/org.apache.axis.encoding.ser.BeanDeserializer. These default serializers and deserializers are not appropriate in certain rare cases. If you face a serialization/deserialization error, it is likely that you need to provide a custom serializer/deserializer.
Here is one of the known cases:
- XML Schema list type
- When the XML Schema of the WSDL document defines an element to
be of the list type:
… you will see an error like the following:<s:simpleType name="MyListType"> <s:list> <s:simpleType> <s:restriction base="s:string"> <s:enumeration value="One" /> <s:enumeration value="Two" /> <s:enumeration value="Three" /> </s:restriction> </s:simpleType> </s:list> </s:simpleType>
The cause of the problem is that org.apache.axis.encoding.ser.ArrayDeserializer is not appropriate for xsd:list types. You should use the org.apache.axis.encoding.ser.SimpleListDeserializer deserializer instead. You can fix the problem using a script like the following in the After Initialize hook of the AxisJavaToSoap/AxisSoapToJava FC:at org.apache.axis.encoding.ser.ArrayDeserializer.characters(ArrayDeserializer.java:502) at org.apache.axis.encoding.DeserializationContext.characters(DeserializationContext.java:966) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:177) 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) at com.ibm.di.fc.webservice.AxisEasyInvokeSoapWS.perform(Unknown Source)var javaType = java.lang.Class.forName("[Ljava.lang.String;"); var xmlType = new javax.xml.namespace.QName("http://www.example.com", "MyListType");; var serializerFactory = new org.apache.axis.encoding.ser.SimpleListSerializerFactory(javaType, xmlType); var deserializerFactory = new org.apache.axis.encoding.ser.SimpleListDeserializerFactory(javaType, xmlType); thisConnector.getFunction().registerTypeMapping(javaType, xmlType, serializerFactory, deserializerFactory);