Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of Apache axis 1.3 – Element with same name in wsdl without wasting too much if your time.
The question is published on by Tutorial Guruji team.
The question is published on by Tutorial Guruji team.
I have a SOAP service with following elements in wsdl file.(first one starts with lowercase ‘i’ and second one with uppercase ‘I’)
Field 1
<element minOccurs="0" name="inventoryOrganization" nillable="true" type="xsd:string"/>
Field 2
<element minOccurs="0" name="InventoryOrganization" nillable="true" type="tns2:ReceiptOfGoods_InventoryOrganization"/>
When I create the stub from this .wsdl, In the stub file I have
private java.lang.String inventoryOrganization; private com.app.system.webservices.dataimport.generated.gr.service.data.ReceiptOfGoods_InventoryOrganization inventoryOrganization2;
And the generated XML fields are as below
<ns1:inventoryOrganization2 invalid="false"> <ns1:guid>SAMPLE-ID</ns1:guid> <ns1:code>100001</ns1:code> </ns1:inventoryOrganization2> <ns1:InventoryOrganization xsi:type="xsd:string">SAMPLE-ID</ns1:InventoryOrganization>
What change should I do in the generated stub to communicate with this service. After some more research I hope, the custom serializer will be the answer.
Answer
The issue was , In the generated class the field was mapped like
typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("inventoryOrganization"); elemField.setXmlName(new javax.xml.namespace.QName("http://url/data", "InventoryOrganization")); elemField.setXmlType(new javax.xml.namespace.QName("http://url/data", "ReceiptOfGoods_InventoryOrganization")); elemField.setMinOccurs(0); elemField.setNillable(true);
It has to be changed to
typeDesc.addFieldDesc(elemField); elemField = new org.apache.axis.description.ElementDesc(); elemField.setFieldName("inventoryOrganization2"); elemField.setXmlName(new javax.xml.namespace.QName("http://url/data", "InventoryOrganization")); elemField.setXmlType(new javax.xml.namespace.QName("http://url/data", "ReceiptOfGoods_InventoryOrganization")); elemField.setMinOccurs(0); elemField.setNillable(true);
In the automatically generated stub, it was mapped as elemField.setFieldName("inventoryOrganization");
, instead of elemField.setFieldName("inventoryOrganization2");
We are here to answer your question about Apache axis 1.3 – Element with same name in wsdl - If you find the proper solution, please don't forgot to share this with your team members.