Ok it seems that I found a workaround to this.

Declaring the type mapping for the primitive types in the deployment wsdd file seems to do the trick.

I put this comment in the Issue AXIS-1746, can somebody tell me if it is really 
the correct way to do it?

Till now I was not even thinking that I had to declare the type mapping for the 
simple primitive types in my deployment scripts.

Cheers,
Patrick.

BLIS Webmaster (Patrick Houbaux) wrote:
After debugging with the axis sources, I think I probably found a bug in AXIS1.2RC2 which I tried to explain in the Issue AXIS-1746.

I will try to propose a patch (as soon as I can).

Cheers,
Patrick.

BLIS Webmaster (Patrick Houbaux) wrote:

Hi all,

Any idea about the problem I have mentionned in the following?
I'm still stuck with that and it's becoming urgent for me to solve it.

Thanks in advance for any help.
Regards,
Patrick.

BLIS Webmaster (Patrick Houbaux) wrote:

Hi all,

I have a RPC web service deployed with Axis 1.2RC2.
For performance issue some of my methods are actually sending the response data in compressed attachments to the clients.


I did set the server to use multiref because the data model I'm sending is a graph and to avoid stack overflow errors.

Everything is working fine for java clients.

Almost everything is working fine for .NET clients (extraction of attachments, decompression) except that I'm currently struggling with the deserialization in .NET of the attached data especially for the simple XML types.

I have no problem for mapping my complex types to the generated proxy assembly types in .NET but if one of the element in my complex types have a value of an XML simple type, it is ignored by the SOAP deserializer of .NET.

Here is a snippet of what axis is sending (just pasted the relevant part of the message that causes problem):
/------------------------
[...]
<ns2:SABLEThermSpace xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="ns2:SABLEThermSpace" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns2="urn:datatypes.rpc.thermal.dapi.webservices.sable.blis_project.org" id="id0" soapenc:root="0">
<GUID xsi:type="soapenc:string">35skClkL5BfP3UzE0csesq</GUID>
[..]
<heatingDesignTemperature href="#id7"/>
<metadatas href="#id8"/>
[..]
</ns2:SABLEThermSpace>
[...]
<multiRef id="id8" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="ns3:SABLEInstanceMetaDatas" xmlns:ns3="urn:datatypes.rpc.common.dapi.webservices.sable.blis_project.org" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
<dateCreated href="#id14"/>
<dateModified href="#id15"/>
<description xsi:type="soapenc:string">N/A</description>
<locked href="#id16"/>
<modelServerInstanceURL xsi:type="soapenc:string">http://ems.eurostep.fi:8080/EMS/7240688</modelServerInstanceURL>


<name xsi:type="soapenc:string">IfcSpace</name>
<owner xsi:type="soapenc:string">eurostepper</owner>
<previousRevision xsi:type="soapenc:string">3</previousRevision>
<revision xsi:type="soapenc:string">4</revision>
<status xsi:type="soapenc:string">not_defined</status>
</multiRef>
[...]
<multiRef id="id7" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="xsd:double" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1000.0</multiRef>


[...]
<multiRef id="id15" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="xsd:long" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1103559114445</multiRef>


<multiRef id="id14" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="xsd:long" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>1103559114445</multiRef>

<multiRef id="id16" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xsi:type="xsd:boolean" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>false</multiRef>

[...]
/------------------------


The deserialization of my object is going fine (no errors) except for the mutiref #id7, #id14, #id15 and #id16: they don't get deserialized while the deserialization of the multiref #id8 is ok.


Is there any specific reasons why Axis 1.2RC2 is sending multiref for XML simple types while it is sending non multiref for the soapenc:string type for instance? Does it make sense?

I tested that if I replace (for instance) the multiref for the XML simple types by non multiref, I would get the .NET deserialization working.

i.e.: <heatingDesignTemperature href="#id7"/>
replaced by
<heatingDesignTemperature xsi:type="xsd:double">1000.0</heatingDesignTemperature>


Any idea? Is there a setting I need to do on the server side to tell axis to not send multiref for XML simple types even if I set the server parameter sendMultiRefs to true?

Regards,
Patrick.

Reply via email to