Hi,
I'm having an issue with Axis2 Vs Axis1.3 code generation using
WSDL2Java when using HashMap as a parameter to one of my methods.
I've explained in detail what the problem I'm getting. Is there a
solution to this issue. I'm will be using Axis2 for developing my
services, I need some help in how to use OMElement to pass objects to
the service method etc.
I have a Java Interface say which has a method that takes in HashMap as
a parameter.
import java.util.HashMap;
public interface TestWS {
public String method1 (HashMap hashMap);
}
Axis 1.3
When I generated WSDL from this interface using Java2WSDL, it created
the wsdl as follows
<wsdl:types>
<schema elementFormDefault="qualified"
targetNamespace="http://DefaultNamespace"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xml.apache.org/xml-soap"/>
<element name="method1">
<complexType>
<sequence>
<element name="in0" type="apachesoap:Map"/>
</sequence>
</complexType>
</element>
<element name="method1Response">
<complexType>
<sequence>
<element name="method1Return"
type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
<schema elementFormDefault="qualified"
targetNamespace="http://xml.apache.org/xml-soap"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="mapItem">
<sequence>
<element name="key" nillable="true"
type="xsd:anyType"/>
<element name="value" nillable="true"
type="xsd:anyType"/>
</sequence>
</complexType>
<complexType name="Map">
<sequence>
<element maxOccurs="unbounded" minOccurs="0"
name="item" type="apachesoap:mapItem"/>
</sequence>
</complexType>
</schema>
</wsdl:types>
And when I created the server side & client side code using this wsdl
with WSDL2Java, my Java (stub & skeleton) classes were created with the
java.util.HashMap as a parameter to method 1.
C# Client using Axis1.3 wsdl
When I generated the C# client using this WSDL file, it created a
mapItem array as a parameter to the method1 where mapItem is a class
having key & value as objects.
Axis2 (1.2)
When I generated WSDL from this interface using Java2WSDL, it created
the wsdl as follows
<wsdl:types>
<xs:schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="http://ws.apache.org/axis2/xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="method1">
<xs:complexType>
<xs:sequence>
<xs:element name="param0" nillable="true"
type="xs:anyType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="method1Response">
<xs:complexType>
<xs:sequence>
<xs:element name="return" nillable="true"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</wsdl:types>
And when I created the server side & client side code using this wsdl
with WSDL2Java, my Java (stub & skeleton) classes were created with
OMElement as a parameter to method 1.
C# Client using Axis2 (1.2) wsdl
When I generated the C# client using this WSDL file, it created a
method1 object as a parameter to the method1 where method1 is a class
having one object as its member.
Thanks
Raghu