You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by "BLIS Webmaster (Patrick Houbaux)" <we...@blis-project.org> on 2005/01/03 09:21:05 UTC

Re:(Please Help me!) Axis 1.2RC2: multiref serialization of xsd simple types / interoperability with .NET

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.

Re: (Workaround found) Axis 1.2RC2: multiref serialization of xsd simple types / interoperability with .NET

Posted by "BLIS Webmaster (Patrick Houbaux)" <we...@blis-project.org>.
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.

Re: (Please Help me!) Axis 1.2RC2: multiref serialization of xsd simple types / interoperability with .NET

Posted by "BLIS Webmaster (Patrick Houbaux)" <we...@blis-project.org>.
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.