You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by "Franklin, Allen" <Al...@concerto.com> on 2004/12/08 18:42:31 UTC

I am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAPI am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAP client.

I am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAP client.
My complex data type has get and set methods, as recommended in the axis docs.
I have tried both the Linux and Windows versions of axis 1.3, and neither works for me.
The complex data type is the return value of a SOAP method.
I always get a value of zero for the pointer (handle) to my complex type object.
I also have a Microsoft SOAP client which is able to handle the complex data type,
so I know the problem lies with the axis client.
My server is compiled using axis version 1.2beta3 (it's java from JBuilder2005).

Are there known problems with passing complex data types? Any work-arounds?

Below is the xml result. My complex type has 6 data elements. I can see valid data being returned for
data elements id1 and id3, which is correct. The string type seems to be missing in the xml...
But like I said, the handle to the object in the C++ code is zero so I can't get to any of the data.

- <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>
- <GetEventInfoResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <GetEventInfoReturn href="#id0" /> 
  </GetEventInfoResponse>
- <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SSEventObj" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://sipserver.concerto.com">
  <eventId href="#id1" /> 
  <destRTPport href="#id2" /> 
  <eventhandle href="#id3" /> 
  <destIPaddr xsi:type="soapenc:string">127.0.0.1</destIPaddr> 
  <codecID href="#id4" /> 
  <reasonId href="#id5" /> 
  </multiRef>
  <multiRef id="id4" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef> 
  <multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef> 
  <multiRef id="id5" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef> 
  <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">10</multiRef> 
  <multiRef id="id3" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">8</multiRef> 
  </soapenv:Body>
  </soapenv:Envelope>

Re: I am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAPI am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAP client.

Posted by Samisa Abeysinghe <sa...@gmail.com>.
Oops. This is the good old known problem of href/multiref :-(
That is the use of <GetEventInfoReturn href="#id0" /> and  <multiRef
id="id0" soapenc:root="0"  ....>

Axis C++ *cannt* deal with them yet - and will not be able to for some
time to come :-(

Please see http://nagoya.apache.org/jira/browse/AXISCPP-111

One workaround would be to diable the use of multirefs by the Axis
Java server (see comments in above URL) but, yes, it is not the ideal
solution.

There is a chance that this would be fixed in 1.5 release due by end
of January 2005 - but not sure.

Thanks,
Samisa...




On Wed, 8 Dec 2004 12:42:31 -0500, Franklin, Allen
<Al...@concerto.com> wrote:
> I am unable to retrieve a complex (aka user defined) data type from a C++ axis version 1.3 SOAP client.
> My complex data type has get and set methods, as recommended in the axis docs.
> I have tried both the Linux and Windows versions of axis 1.3, and neither works for me.
> The complex data type is the return value of a SOAP method.
> I always get a value of zero for the pointer (handle) to my complex type object.
> I also have a Microsoft SOAP client which is able to handle the complex data type,
> so I know the problem lies with the axis client.
> My server is compiled using axis version 1.2beta3 (it's java from JBuilder2005).
> 
> Are there known problems with passing complex data types? Any work-arounds?
> 
> Below is the xml result. My complex type has 6 data elements. I can see valid data being returned for
> data elements id1 and id3, which is correct. The string type seems to be missing in the xml...
> But like I said, the handle to the object in the C++ code is zero so I can't get to any of the data.
> 
> - <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>
> - <GetEventInfoResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>   <GetEventInfoReturn href="#id0" />
>   </GetEventInfoResponse>
> - <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns1:SSEventObj" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://sipserver.concerto.com">
>   <eventId href="#id1" />
>   <destRTPport href="#id2" />
>   <eventhandle href="#id3" />
>   <destIPaddr xsi:type="soapenc:string">127.0.0.1</destIPaddr>
>   <codecID href="#id4" />
>   <reasonId href="#id5" />
>   </multiRef>
>   <multiRef id="id4" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef>
>   <multiRef id="id2" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef>
>   <multiRef id="id5" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">0</multiRef>
>   <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">10</multiRef>
>   <multiRef id="id3" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">8</multiRef>
>   </soapenv:Body>
>   </soapenv:Envelope>
>