That's a bug in Axis 1.2. Please upgrade to Axis 1.4.
On Wed, May 28, 2008 at 4:52 AM, Karthik R <[EMAIL PROTECTED]> wrote:
> Hello Friends,
>
>
> Hello Friends,
>
> While Accessing a webservice using axis 1.2, we are sending the input as
> arrayofComplex Data Type.
>
> ComplexData Type - a Class KeyValuePair.
> public class KeyValuePair implements java.io.Serializable {
> private java.lang.String key;
> private java.lang.String value;
> public KeyValuePair() { }
>
> public KeyValuePair(java.lang.String key, java.lang.String value) {
> this.key = key;
> this.value = value;
> }
> }
>
> Input to the webservice is array of the above mentioned data Type.
>
> We are expecting the following request.
>
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:ProcessEvent
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://www.epiphany.com/RP">
> <package xsi:type="xsd:string">THREE</package>
> <event xsi:type="xsd:string">OfferRequest</event>
> <fields soapenc:arrayType="ns1:ArrayOfKeyValuePair[10]"
> xsi:type="soapenc:Array"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
> <item href="#id0"/>
> <item href="#id1"/>
> </fields>
> </ns1:ProcessEvent>
>
> <multiRef id="id0" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns7:KeyValuePair"
> xmlns:ns7="http://www.epiphany.com/RP"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
> <key xsi:type="xsd:string">
> SessionId
> </key>
> <value xsi:type="xsd:string">
> 1234567890
> </value>
> </multiRef>
>
> <multiRef id="id1" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns2:KeyValuePair"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns2="http://www.epiphany.com/RP">
> <key xsi:type="xsd:string">
> Customer_ID
> </key>
> <value xsi:type="xsd:string">
> </value>
> </multiRef>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Instead we are getting the following
>
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ns1:ProcessEvent
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns1="http://www.epiphany.com/RP">
> <package xsi:type="xsd:string">THREE</package>
> <event xsi:type="xsd:string">OfferRequest</event>
> <fields soapenc:arrayType="ns1:ArrayOfKeyValuePair[10]"
> xsi:type="soapenc:Array"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
> <fields href="#id0"/>
> <fields href="#id1"/>
> </fields>
> </ns1:ProcessEvent>
>
> <multiRef id="id0" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns7:KeyValuePair"
> xmlns:ns7="http://www.epiphany.com/RP"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
> <key xsi:type="xsd:string">
> SessionId
> </key>
> <value xsi:type="xsd:string">
> 1234567890
> </value>
> </multiRef>
>
> <multiRef id="id1" soapenc:root="0"
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> xsi:type="ns2:KeyValuePair"
> xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:ns2="http://www.epiphany.com/RP">
> <key xsi:type="xsd:string">
> Customer_ID
> </key>
> <value xsi:type="xsd:string">
> </value>
> </multiRef>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Note the ArrayOfKeyValuePair should have tag named <item> as per soap
> standards, but we get the parent array tag name in its
> element name too. i.e fields tag is replaced for <item tag
>
> HOw to solve this issue and get expected response.
>
> Fyi
> We have given the Serializer and Deserializer as below
> QName arrayOfKeyValuePairQname = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP",
> "ArrayOfKeyValuePair");
> QName arrayOfReturnedOffersQname = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP",
> "ArrayOfReturnedOffer");
> QName keyValuePairQName = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP", "KeyValuePair");
> QName returnedOfferQName = new
> javax.xml.namespace.QName("http://www.epiphany.com/RP", "ReturnedOffer");
>
>
> TypeMappingRegistry typeMappingRegistry =
> service.getTypeMappingRegistry();
> TypeMapping map = typeMappingRegistry.getDefaultTypeMapping();
>
> map.register(KeyValuePair[].class, arrayOfKeyValuePairQname,
> new ArraySerializerFactory(KeyValuePair[].class,
> arrayOfKeyValuePairQname),
> new ArrayDeserializerFactory());
>
> map.register(KeyValuePair.class, keyValuePairQName,
> new BeanSerializerFactory(KeyValuePair.class,
> keyValuePairQName), new BeanDeserializerFactory(
> KeyValuePair.class, keyValuePairQName));
>
> map.register(ReturnedOffer.class, returnedOfferQName,
> new BeanSerializerFactory(ReturnedOffer.class,
> returnedOfferQName), new BeanDeserializerFactory (
> ReturnedOffer.class, returnedOfferQName));
>
> Still we are not able to get the expected result. Kindly help us ASAP.
>
> WSDL Entry is as follows.
> <xsd:complexType name="KeyValuePair">
> <xsd:sequence>
> <xsd:element name="key" type="xsd:string"/>
> <xsd:element name="value" type="xsd:string"/>
> </xsd:sequence>
> </xsd:complexType>
> <xsd:complexType name="ArrayOfKeyValuePair">
> <xsd:complexContent>
> <xsd:restriction base="SOAP-ENC:Array">
> <xsd:sequence>
> <xsd:element name="item" type="rp:KeyValuePair"
> maxOccurs="unbounded"/>
> </xsd:sequence>
> <xsd:attribute ref="SOAP-ENC:arrayType"
> wsdl:arrayType="rp:KeyValuePair[]"/>
> </xsd:restriction>
> </xsd:complexContent>
> </xsd:complexType>
>
> <message name="ProcessEventRequest">
> <part name="package" type="xsd:string"/>
> <part name="event" type="xsd:string"/>
> <part name="fields" type="rp:ArrayOfKeyValuePair"/>
> </message>
>
> Regards
> Karthik R
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]