That's not where my problem is ;)
This gets deserialized correctly, my problem is with the XML schema simple type sent as multiref.


Cheers,
Patrick.

HG wrote:
Hi there.

I can't actually remember, so this is a best shot, Ok?

<name xsi:type="soapenc:string">IfcSpace</name>

WS-I Basic Profile prohibits "soapenc", used the schema equivalent type
instead.


----- Original Message ----- From: "BLIS Webmaster (Patrick Houbaux)" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, December 22, 2004 12:50 PM
Subject: Axis 1.2RC2: multiref serialization of xsd simple types /
interoperability with .NET




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</modelServ erInstanceURL>

<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</mul tiRef>

<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</mul tiRef>

<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