I had a similar problem and it ends up in writing a wrapper in .NET.
This service is converting the DataSet structure to Arrays (and back).
This seems to be the only was to control the interop problems between
.NET and Axis with DataSets.
Interesting Links on this behalf:
Interoperability Tips:
http://blogs.msdn.com/smguest/archive/2004/08/12/213659.aspx
Description on DataSet Problem:
http://msdn.microsoft.com/msdnmag/issues/03/04/XMLFiles/
DateTime Problem within DataSets:
http://support.microsoft.com/default.aspx?scid=kb;en-us;842545
I hope this helps.
Ralf
Richard Schrauwen schrieb:
Hi Guy,
Well, that's exaxtly my problem, I can't. The WSDL does not describe the
complete structure, but includes an xsd to evaluate runtime what has
been sent. Something like this:
......
<s:element name="CreateElements">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="elements">
<s:complexType>
<s:sequence>
<s:any namespace="http://tempuri.org/NewElement.xsd" />
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
.....
with NewElement.xsd:
<xs:element name="NewElement">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="NewElementTbl">
<xs:complexType>
<xs:sequence>
<xs:element name="MAC" type="xs:string" minOccurs="0"/>
<xs:element name="ParentID" type="xs:integer" minOccurs="0"/>
<xs:element name="TemplateName" type="xs:string" minOccurs="0"/>
<xs:element name="Type" type="xs:string" minOccurs="0"/>
<xs:element name="IP" type="xs:string" minOccurs="0"/>
<xs:element name="ClonedMAC" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
and .NET expects a soap structure like this with a schema and diffgram
element extra:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<CreateElements xmlns="http://42Networks.com/cpe/DRGMgr">
<elements>
<xs:schema id="NewElement"
targetNamespace="http://tempuri.org/NewElement.xsd"
xmlns:mstns="http://tempuri.org/NewElement.xsd"
xmlns="http://tempuri.org/NewElement.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:element name="NewElement"
msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="NewElementTbl">
<xs:complexType>
<xs:sequence>
<xs:element name="MAC"
type="xs:string" minOccurs="0" />
<xs:element name="ParentID"
type="xs:long" minOccurs="0" />
<xs:element name="TemplateName"
type="xs:string" minOccurs="0" />
<xs:element name="Type"
type="xs:string" minOccurs="0" />
<xs:element name="IP"
type="xs:string" minOccurs="0" />
<xs:element name="ClonedMAC"
type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewElement
xmlns="http://tempuri.org/NewElement.xsd">
<NewElementTbl diffgr:id="NewElementTbl1"
msdata:rowOrder="0" diffgr:hasChanges="inserted">
<MAC>22:11:11:11:11:11</MAC>
<ParentID>1</ParentID>
<TemplateName>
Template: DRG-11 [H323]
</TemplateName>
<Type>DRG-11 [H323]</Type>
<IP>0.0.0.0</IP>
</NewElementTbl>
</NewElement>
</diffgr:diffgram>
</elements>
</CreateElements>
</soap:Body>
</soap:Envelope>
I tried to add the missing elements in the WSDL by hand, but this does
not result in the expected soap call. As the structure with namespaces
and so is similarfor all .NET DataSets I hoped that someone already made
some Serializer or WSDL that will do the trick...
Richard
From: Guy Rixon <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
Subject: Re: .NET DataSet in Axis
Date: Tue, 30 Aug 2005 08:56:26 +0100 (BST)
Can you not generate beans for the types in question using WSDL2Java?
On Tue, 30 Aug 2005, Richard Schrauwen wrote:
> Hi,
>
> I was wondering if there is any progress in the .NET - Axis
> interoperability, especially regarding the support of .NET DataSet in
axis.
> The server I am talking to only accepts a DataSet with fields like
schema
> and diffgram. I know, the .NET side should not expose such internal
> datatypes to the outside world, but 'they' won't change it. At least
not for
> an acceptable price to pay....
>
> I've seen in my searches that many mortal souls have encountered the
same
> problem, only no solutions appeared on my screen. Does anyone know
about a
> Serializer for DataSets or another way to create a DataSet compatible
soap
> request?
>
> cheers,
> Richard
>
>
Guy Rixon [EMAIL PROTECTED]
Institute of Astronomy Tel: +44-1223-337542
Madingley Road, Cambridge, UK, CB3 0HA Fax: +44-1223-337523