I am experiencing some problems converting XML requests on the server side, in case XML requests contain xsi:type parameter.
The setup is following Two objects: ObjectSubClass extends ObjectSuperClass A webservice with a method: getObject(ObjectSuperClass obj) In wsdl these objects defined in the following way: <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://mypackage.com/xsd"> <xs:complexType name="ObjectSuperClass"> <xs:sequence> <xs:element minOccurs="0" name="id" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="ObjectSubClass"> <xs:complexContent> <xs:extension base="ax21:ObjectSuperClass"> <xs:sequence> <xs:element minOccurs="0" name="phone" nillable="true" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:schema> >From the client I am calling this method by passing to it subclass - >ObjectSubClass which has one extrafield -- phone: ObjectSubClass obj = new ObjectSubclass(); obj.setId("some id"); obj.setName("some name"); obj.setPhone("some phone"); getObject(obj); In the request XML object is represented like that: <obj xsi:type="q1:ObjectSubClass" xmlns:q1="http://mypackage.com/xsd"> <id>1</id> <name>test</name> <q1:phone>123</q1:phone> </obj> But on the server side no matter if I am passing instance of ObjectSuperClass or instance of ObjectSubClass I am getting always instance of superclass ObjectSuperClass, even when xsi:type specifies that object is of subclass ObjectSubClasstype. As a result I am not getting values present on ObjectSubClass and getting only values defined in superclass ObjectSuperClass. Same structure worked fine in axis1 ans xsi:type was respected. Maybe it is some configuration in axis2. I would be really thankful for any help.
